【发布时间】:2012-06-20 00:42:35
【问题描述】:
所有,我想知道是否有更好的方法从两个单独的List<T>s 中获取匹配值的List<T>。
如果我想在字符串列表itemList<string>(一个不同的列表)中找到另一个列表bankList<string>中的所有项目(也不同,所以返回的列表也是不同的 - 没有重复),我目前会这样做的方式) 将是
List<string> matchingList = new List<string>();
foreach (string s in itemList)
if (bankList.Contains(s))
matchingList.Add(s);
有没有更好和/或更快的方法?
扩展:我很欣赏这个问题已经得到了回答(这是利用),但出于兴趣,最好的方法是获得否定(即那些不在中的项目bankList<string> ) 是
List<string> interList = new List<string>();
interList = itemList.Intersect(bankList).ToList<string>();
matchingList = itemList.Except(interList).ToList<string>();
或者在这种情况下会回到
List<string> matchingList = new List<string>();
foreach (string s in itemList)
if (!bankList.Contains(s))
matchingList.Add(s);
我认为在这种情况下有趣的是可能是后者?
【问题讨论】:
-
查看我对第二个问题的编辑。一般来说,您应该提出一个新问题,而不是在其中编辑一个新问题。一旦您接受了问题的答案,大多数人就不会注意了。
标签: c# list optimization