聽起來好像以前有人問過這個答案,但不一樣。我正在尋找一種方法來檢查列表“A”是否包含列表“B”中的所有元素,我從這個問題中得到了答案:Does .NET have a way to check if List a contains all items in List b ? . 不管怎樣,我對這個解決方案有疑問。我的列表“A”可以有一系列Item對象,列表 B 也可以,如果列表 B 包含 2 次相同的對象并且我的列表“A”為 1 或更少,我希望我的代碼返回 false。這段代碼(取自正確答案):return !RequiredItems.Except(Application._player.InventoryItems).Any();僅檢查元素是否在列表“A”中至少存在一次。例子:清單 A:汽車清單 B:汽車,汽車將返回 true,因為 List A 包含一輛汽車,即使我希望它返回 false,除非它有 2 輛汽車。有沒有辦法修改該代碼以制作我想要的東西,或者有另一種方法來實現(xiàn)這一點?編輯: @HimBromBeere 讓我意識到我忘了說一些非常重要的事情。列表 A 需要至少具有相同數量的元素才能實現(xiàn)目標。如果此列表 A 包含 1000 輛汽車,而列表 B 僅包含 B,則它應該返回 true。如果列表 A 在列表 B 中包含較少或沒有元素(包括重復項),則它只能返回 false。
1 回答
胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
我可以想象這樣一種基于循環(huán)的方法:
bool areEqual = true;
foreach(var g in listB.GroupBy(x => x))
{
if(listA.Count(x => x == g.Key) >= g.Count())
{
areEqual = false;
break;
}
}
它對 的所有重復項進行分組,listB并檢查它們的數量是否至少是來自 的相等項目的數量listA。
這當然假設您的重復項的引用相等。否則你將不得不實施一些平等檢查。
- 1 回答
- 0 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消
