簡體   English   中英

使用 linq 從兩個列表中返回超過兩次的獨占元素

[英]Return exclusive elements from two lists that comes more than twice using linq

我有兩個清單:

    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

但我希望 output 包含已復制的專有元素。 所以,

10 
30
30

LINQ 具有您正在尋找的語義:

var newList = List1.Where(x => !List2.Contains(x));

請注意,這是列表大小的二次方。 如果列表很大,那么這可能需要很長時間。 為了緩解這種情況,您可以先將另一個列表轉換為一個集合,以便快速查找:

var list2AsSet = List2.ToHashSet();
var newList = List1.Where(x => !list2AsSet.Contains(x));

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM