我找到了很多關於如何比較兩個列表使用除了但我找不到任何解釋如何比較兩個列表的屬性。查找列表<T>屬性和列表之間的三角洲<T><T>
我有兩個模型
FruitBasket
{
......
public int[] Fruit {get; set;}
}
Fruit
{
public int Id {get; set;}
......
}
的FruitBasket.Fruit
屬性具有數字的數組對應於Fruit.Id
。但是,我需要清除FruitBaskets
中的孤兒。
例如FruitBasket.Fruit
將包含1,2,3,4,5,但只會有一個水果1個,水果2,水果3.所以,我需要找到在4,5和糾正。
我寫了一個醜陋的雙ForEach
循環通過FruitBaskets
和Fruit
試圖找到三角洲和我越來越離譜的結果,因爲我只是沒有足夠的智慧來弄明白。
List<int> missing = new List<int>();
foreach (var basket in lstBaskets)
{
foreach (var frt in lstFruits)
{
if (!basket.Fruit.Contains(frt.Id))
{
missing.Add(frt.Id);
}
}
}
此外,作爲一個更優雅的方式來實現這一目標嗎?這肯定是一種常見的商業需求,並且有一種高效的方式來實現它?
注
注意,一個是列表屬性(FruitBaskets.Fruit)正在相比,水果這僅僅是一個列表。
是'lstBaskets'一個'名單'? 'lstFruits'是'列表'?您可以使用SelectMany來壓扁集合。使用這個:'missing = lstBaskets.SelectMany(s => s.Fruit).Select(s => s.Id).Except(lstFruits.select(s => s.Id))。ToList()' –
user2023861
所以你只是想找到列表差異? – Jacobr365
我需要更新OP來澄清和標題。我實際上將名單財產與名單比較。 –
GPGVM