[英]How to compare 2 Lists in Linq Query?
我有數據庫模型
public class Dish
{
public int Id { get; set; }
public String Name { get; set; }
public Dictionary<Ingridient, int> Ingridients { get; set; }
public List<String> Images { get; set; }
public String Guide { get; set; }
public Guid User { get; set; }
public DishType dishType { get; set; }
public int Rate { get; set; }
public enum DishType
{
Polish,
Asian,
Indian,
Other
};
}
我想從List<Ingridient>
獲取所有含有內臟成分的菜餚。 就像是
輸入List<Ingridient>
在字典包含所有這些成分的地方獲得所有菜餚。 當Ingridient是關鍵時。
我嘗試了一些緩慢的解決方案,該解決方案適用於數據庫中的所有菜餚,但我想移至查詢數據庫以使其更快。
我的解決方案-非常慢,並且占用大量內存:
List<Dish> allDishes = Dishes.Select(n => n).ToList();
List<Dish> Found = new List<Dish>();
foreach(var d in allDishes)
{
List<Ingridient> fromDish = d.Ingridients.Keys.ToList();
foreach(var ing in ingridients)
{
if (!fromDish.Contains(ing))
break;
}
Found.Add(d);
}
我想將這種行為重新創建為Linq查詢。
嘗試
dishes.Where(dish => !ingredients.Except(dish.Ingredients).Any()).ToList();
其中!ingredients.Except(dish.Ingredients).Any()
檢查請求列表中的所有配料是否都包含在菜品的配料中。
您可以在這里進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.