我有一個清單int
。
List<int> numberList = new List<int>() { 1, 2, 3, 4, 8, 10, 2};
現在,我有另一個清單int
List<int> numberListEnhanced = new List<int>() { 1, 2, 3, 5, 6};
我有一個 LINQ 查詢,我在其中使用 WHERE 并且我需要檢查是否numberListEnhanced
包含numbersList
.
我已經完成了一個,但對于多個無法弄清楚。
單身:
.....where numberListEnhanced.Contains((int)s.Id));
uj5u.com熱心網友回復:
您可以使用Intersect
(無重復):
var valuesInBothLists = numberList.Intersect(numberListEnhanced).ToList();
// result: 1 2 3
或者您可以使用以下方法執行此操作Where
:
var valuesInBothLists = numberList.Where(item => numberListEnhanced.Contains(item)).ToList();
// or
var valuesInBothLists = from item in numberList
where numberListEnhanced.Contains(item)
select item;
// result: 1 2 3 2
uj5u.com熱心網友回復:
你應該使用Intersect
:
IEnumerable<int> both = numberList.Intersect(numberListEnhanced);
檢查這個: https ://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.intersect?view=net-6.0
uj5u.com熱心網友回復:
我需要檢查是否
numberListEnhanced
包含numbersList
解決這個問題的另一種方法是扭轉你的想法:
我需要檢查其中是否存在
numbersList
不存在的元素numberListEnhanced
如果您發現 中存在不存在的元素numbersList
,則您知道 中不包含中的所有元素。numberListEnhanced
numberListEnhanced
numbersList
numbersList
查找其中不存在的所有元素的一種方法numberListEnhanced
是使用.Except()
:
var notPresentElements = numbersList.Except(numberListEnhanced);
從這里,我們可以計算:
var allElementsArePresent = !notPresentElements.Any();
確認(或反駁)numberListEnhanced
包含numbersList
.
兩者.Except()
都.Any()
來自命名空間System.Linq。
注意:
使用.Except()
將比較兩個集合的元素集,并生成一個元素集作為結果。例子:
{ 1, 2, 2 }.Except({ 1, 2 })
將產生{ }
,即使2
在第一個集合中重復{ 1, 2, 3, 3 }.Except({ 1, 2 })
會產生{ 3 }
,不會{ 3, 3 }
如果您需要考慮重復元素計數,則需要使用另一種方法(或對重復元素進行額外檢查)。
使用您的示例值,
List<int> numbersList = new() { 1, 2, 3, 4, 8, 10, 2 };
List<int> numberListEnhanced = new() { 1, 2, 3, 5, 6 };
var notPresentElements = numbersList.Except(numberListEnhanced);
var allElementsArePresent = !notPresentElements.Any();
notPresentElements
{ 4, 8, 10 }
列舉時將包含。
實際上,將notPresentElements
-- false
>numberListEnhanced
不包含.numbersList
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/497419.html