私はList<Ingridient>
からの頼まれingridientsを持っているすべての料理を取得したいのですが、データベースモデルLinqクエリの2リストを比較する方法?
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>
のような何かが辞書が、これらすべてのingridientsをcontaintsすべての料理を取得します。 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クエリとして、この動作を再現したいと思います。
これまでに何を試しましたか? –
解決策を探してみましたが、まだ役に立たないものは見つかりませんでした。私は自分自身のLinqを考え出そうとしましたが、正直言って私にとっては複雑すぎます。 – Dreik
質問を編集しました。欠けているものや何かが間違っている場合は、それを修正する際にあなたの助けに感謝したいと思います。 – Dreik