我仍然是C#的初学者,所以我确信我在这里错过了一些基本概念,但我正在努力解决这个问题。
我正在尝试从两个现有系列中创建一个新系列。
第一个是Dictionary<string, someModel[]>
第二个是Dictionary<string, string>
我试图找到两个dicts键之间的匹配,如果匹配,则使用两个dicts中的值创建一个新的myOtherModel
,但如果它们不匹配,我仍然想要创建新的{{1}但是如果缺少值的空字符串,那么添加所有新的myOtherModel
将被添加到列表中
新的myModel对象将是两种情况之一
例如:Dict1.Keys = 1,2,3,4 .... 100。 Dict2.Keys = 5,9,27,55
myOtherModel
所以基本上,比较两个字典,对于较大字典中的每个项目,使用项目的值创建一个新的myModel(其中一个将为空)。但是,如果该项的键与另一个词典中的键匹配,则获取第二个词典的值并在新的myModel中拍打它
我试过乱搞一个元组,但我无法按照自己的意愿操纵它们。
这是我到目前为止,但不是给我490项(来自dict1的计数),而是获得44k(两者的数量相乘)
myList.Add(new myModel = {1, "", someModel[]}) //did not find a match
myList.Add(new myModel = {5, dict2.MatchingValue, someModel[]}) // did find a match
答案 0 :(得分:1)
每次迭代第一个集合时,您都会遍历第二个集合,这就是您看到太多结果的原因。您可以使用简单的Linq ...
轻松简化代码 foreach (var pair in dict1)
{
// Get the matched value. If there isn't one it should return the default value for a string.
var matchedValue = dict2.Where(x => x.Key == pair.Key).Select(x => x.Value).SingleOrDefault();
var x = new myModel()
{
prop1 = matchedValue,
prop2 = pair.Key,
prop3 = pair.Value
};
myListOfModels.add(x);
}