2017-07-03 40 views
1

現在、Entity Frameworkを使用してデータベース関係をテストしています。私はlinqクエリからすべての要素を返すのに問題があります。考えてみると、はWeb_Categoriesと多対多の関係にあり、私はProfilesを使って両方のテーブルからIDを持っていることを知っているので、カテゴリを見つけることができます。 Web_CategoriesICollectionWeb_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)); 
} 

ありがとう!

+1

'' '.SelectMany(C => c.Categories)と' .Select(C => c.Categories)を交換し、そして最終的には後の ')('個別適用を使用することができます。 –

+0

@IvanStoevありがとう、これは完全に動作します!しかし、私はどこで "Distinct"を適用する必要がありますか?私はforeachを介して作成されたIEnumerableごとに 'Concat()'という別のIEnumerableを作成しようとしましたが、Distinct()を正しく適用できないようです。 –

+0

'SelectMany'の直後。 '.SelectMany(c => c.Categories).Distinct()。ToList()' –

答えて

1

あなたはid.ToList().ForEach(c => Console.WriteLine(c.IDCategorie))

+0

私はこれに問題があります、ForeachはList のために定義されていません –

+0

@LéonardLaiterそれは 'ForEach'、タイプミスのため申し訳ありません –

+0

これは、ありがとう! –

関連する問題