比较两个列表并将匹配结果提供给另一个C#
我是一名电子工程师 我用C#为Windows窗体应用程序编写了一个程序 我需要你的帮助来处理这件事。我有两个相同大小的字符串[num]和[work]列表,[num]的每个值对应于如下所示的[work]:比较两个列表并将匹配结果提供给另一个C#,c#,string,list,C#,String,List,我是一名电子工程师 我用C#为Windows窗体应用程序编写了一个程序 我需要你的帮助来处理这件事。我有两个相同大小的字符串[num]和[work]列表,[num]的每个值对应于如下所示的[work]: num work 11 0,4 23 0,5 36 0,333 49 13 ... lnum 23 36 49 ... lnum lwork 23 0,5 36 0,333 49 13 ... 然后我得到了字符串列表[lnum],它几乎类似于[num],但像
num work
11 0,4
23 0,5
36 0,333
49 13
...
lnum
23
36
49
...
lnum lwork
23 0,5
36 0,333
49 13
...
然后我得到了字符串列表[lnum],它几乎类似于[num],但像这样的数字较少:
num work
11 0,4
23 0,5
36 0,333
49 13
...
lnum
23
36
49
...
lnum lwork
23 0,5
36 0,333
49 13
...
我想做的是得到lnum中存在的数字对应的值
像这样:
num work
11 0,4
23 0,5
36 0,333
49 13
...
lnum
23
36
49
...
lnum lwork
23 0,5
36 0,333
49 13
...
我开发的代码是:
List<string> num = new List<string>();
List<string> work = new List<string>();
List<string> lnum = new List<string>();
List<double> lwork = new List<double>();
for (int i = 0; i < num.Count; i++)
{
for (int j = 0; j < lnum.Count; j++)
{
if(lnum[j] == num[i])
{
lwork.Add(Convert.ToDouble(work[j].ToString()));
}
}
}
List num=new List();
列表工作=新列表();
List lnum=新列表();
List lwork=新列表();
对于(int i=0;i
现在的问题是,如果数字列表有很多变量,我似乎没有按照正确的方式来做。我做错了什么?最好的方法是什么?我需要对代码进行哪些更改
如果你需要更多的解释,我会尽量解释得更详细。对不起,英语中有任何错误,我是葡萄牙人,英语不是我的母语,如果标题不能更好地描述我的奋斗,我深表歉意
我真的很需要你的帮助,我会永远感激你的帮助。
我希望你们度过一个最好的周末 从您的
num
和work
列表中创建词典:
Dictionary<string,string> lookup = new Dictionary<string,string>();
for(int i = 0; i < num.Count; i++)
lookup.Add(num[i], work[i]);
字典查找=新建字典();
对于(int i=0;i
使用此查找字典,可以轻松创建新的配对:
for(int i = 0; i < lnum.Count; i++)
{
string lkey = lnum[i];
string lwork = lookup[lkey];
....
}
for(int i=0;i
当然,您应该添加一些错误处理,例如,如果
lnum
包含查找中找不到的字符串
,您可以使用linq选择lwork值:
Dictionary<String, String> origin = new Dictionary<String, String>();
// TODO populate origin with key = num and value = work
PopulateOrigin(origin);
List<String> lnum = new List<String>();
// TODO populate lnum list
PopulateLNum(lnum);
List<Double> lwork = origin.Where(kv => lnum.Contains(kv.Key)).Select(kv => Convert.ToDouble(kv.Value)).ToList<Double>();
Dictionary origin=newdictionary();
//TODO使用key=num和value=work填充原点
人口起源(起源);
List lnum=新列表();
//TODO填充lnum列表
人口数(lnum);
列出lwork=origin.Where(kv=>lnum.Contains(kv.Key)).Select(kv=>Convert.ToDouble(kv.Value)).ToList();
如果两个列表都是通过索引链接的,则改用字典(如果不可能有重复的Num
),或者创建一个具有两个属性的类并填充列表。这看起来像是一个“SortedDictionary”可以满足您的需要(或在其他语言中是“map”)您想要交叉列表吗?如果是,那么看一看你似乎需要我不认为这个代码片段做什么OP是要求。也许,如果需求没有代码,我们可以建议实现它的方法?