現在、Entity Frameworkを使用してデータベース関係をテストしています。私はlinqクエリからすべての要素を返すのに問題があります。考えてみると、はWeb_Categories
と多対多の関係にあり、私はProfiles
を使って両方のテーブルからID
を持っていることを知っているので、カテゴリを見つけることができます。 Web_Categories
のICollection
がWeb_Profiles
でありますので、私は使用してそれを見つけることができます。linqクエリからすべての要素を取得する方法は?
var idCategory = context.WebProfiles
.Where(c => c.IDProfile == item)
.Select(c => c.Categories)
.ToList();
WebProfilesは私のコンテキストとCategories
からDbSet
ている上記のようにICollection
です。このクエリの戻り値の型はList<ICollection<Web_Categories>>
です。このリストをループすると、プロファイルに関連付けられたカテゴリを取得する場合、1つのプロファイルに対して1つのカテゴリしか取得できませんでしたが、多くのプロファイルには多くのカテゴリがあります。これどうやってするの?
これは私がIDCategoryプロパティのSelect
を作り、試してみましたが何ですが、私はすべてのCategory
を表示するには、Select
文の後に使用する方法を知っていない:あなたの助けを
foreach (var id in idCategory)
{
Console.WriteLine(id.Select(c => c.IDCategorie));
}
ありがとう!
'' '.SelectMany(C => c.Categories)と' .Select(C => c.Categories)を交換し、そして最終的には後の ')('個別適用を使用することができます。 –
@IvanStoevありがとう、これは完全に動作します!しかし、私はどこで "Distinct"を適用する必要がありますか?私はforeachを介して作成されたIEnumerableごとに 'Concat()'という別のIEnumerableを作成しようとしましたが、Distinct()を正しく適用できないようです。 –
'SelectMany'の直後。 '.SelectMany(c => c.Categories).Distinct()。ToList()' –