我是电子工程师。
我在C#中为Windows窗体应用程序制作的程序中有一个问题 我需要你的帮助才能解决它。我有两个字符串[num]和[work]列表,大小相同,[num]的每个值对应于[work],如下所示:
num work
11 0,4
23 0,5
36 0,333
49 13
...
然后我的字符串列表[lnum]几乎就像[num]但是数字少了这样的数字:
lnum
23
36
49
...
而我想要做的是获得与lnum中存在的数字相对应的值 像这样:
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()));
}
}
}
现在的问题是,如果数字列表中有很多变量,我似乎并没有这样做。我做错了什么?做这个的最好方式是什么?我需要对代码进行哪些更改?
如果您需要进一步解释,我会尝试更详细地解释。对于英语中的任何错误,我很抱歉,葡萄牙语和英语不是我的自然语言,如果标题没有更好地描述我的斗争,那么我就是apolagyse。
我真的非常需要你的帮助,我将永远感激你的帮助。 我希望你们所有人度过最美好的周末!
答案 0 :(得分:1)
根据您num
和work
列表构建词典:
Dictionary<string,string> lookup = new Dictionary<string,string>();
for(int i = 0; i < num.Count; i++)
lookup.Add(num[i], work[i]);
使用此查找字典可以轻松创建新配对:
for(int i = 0; i < lnum.Count; i++)
{
string lkey = lnum[i];
string lwork = lookup[lkey];
....
}
当然,您应该添加一些错误处理,例如lnum
包含lookup
中找不到的字符串
答案 1 :(得分:0)
您可以使用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>();