我有兩個清單:
int[] List1 = { 10, 10029, 30, 30, 10030 };
int[] List2 = { 14,22,23,24,25,26,2728,29,10029,10030 };
以及以下宣告,
var NewList = List1.Except(List2);
回報
10
30
但我希望輸出包含已復制的獨占元素。所以,
10
30
30
uj5u.com熱心網友回復:
具有您正在尋找的語意的 LINQ:
var newList = List1.Where(x => !List2.Contains(x));
請注意,這是串列大小的二次方。如果串列很大,那么這可能需要很長時間。為了緩解這種情況,您可以先將另一個串列轉換為一個集合,以便快速查找:
var list2AsSet = List2.ToHashSet();
var newList = List1.Where(x => !list2AsSet.Contains(x));
uj5u.com熱心網友回復:
使用Contains方法判斷元素是否存在于第二個串列中
int[] List1 = { 10, 10029, 30, 30, 10030 };
int[] List2 = { 14,22,23,24,25,26,2728,29,10029,10030 };
var exclusive = List1.Where(x => !List2.Contains(x));
foreach (var el in exclusive){
Console.WriteLine(el);
}
更多關于Contains- https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.contains?view=net-6.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399240.html
上一篇:如何使用LINQ查詢提取子查詢
下一篇:Linqwhere子句混淆
