我有一个我认为可以用 LINQ 解决的任务。问题是我对它很陌生,我只是无法正确实施我的想法。
问题:
我有两个字符串列表:
var list1 = new List<string>{ "item1", "item2" }; <br>
var list2 = new List<string>{ "item1", "item3", "item3", "item4" };
Run Code Online (Sandbox Code Playgroud)
目标是返回一个包含 list2 中未包含在 list1中的元素的新列表,( "item3", "item4" )
你是对的,这是一个简单的:
list2.Except(list1).ToList();
Run Code Online (Sandbox Code Playgroud)
尾随ToList存在是因为你说你的目标是返回一个新的 List - 但如果你要做的只是用 foreach 或其他东西枚举结果,它可以被省略
来自 juharr 的好地方;您第一个重复的 item3 就在移动网站的自动换行边界上,所以我没有注意到您的列表是 1,3,3,4
保留重复项的性能不佳的变体,适用于小列表:
list2.Where(e => !list1.Contains(e));
Run Code Online (Sandbox Code Playgroud)
应该用于大列表 1 的性能更好的版本:
var lookup = new HashSet<string>(list1);
list2.Where(e => !lookup.Contains(e));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |