2017-11-10 4 views
1

私は別の値を取得する必要があるデータベースアプリケーションでは苦労しています。全体の構造は、これは、DBからのモデルであり、私はすべてのA'sのサブセットを持っている、ややこのリスト内のリストの別の値を取得

class A 
{ 
    public virtual ICollection<B> Bs { get; set; } 
} 
class B 
{ 
    public virtual C C { get; set; } 
} 
class C 
{ 
    public int x {get; set;} 
} 

のように見えます。今度はdistinctの値C.xをすべてA'sから取得する必要があります。 そこで、基本的

db.A.Where(something).SelectMany(s => s.Bs.SelectMany(t => t.C.x).ToList().Distinct()).ToList() 

のようなもの。しかし、それは第二SelectManyは用法から推測することができないことを、私に語りました。 BAのメンバーが、Bsではなく、またあなたの第二SelectManySelectでなければならないこと

SelectMany(s => s.Bs.Select(t => t.C.x) 

注:

+0

可能な重複:https://stackoverflow.com/questions/18602923/selectmany-cannot-infer-type-argument-why-not –

答えて

1

あなたはこれを試みることができる続きを読みますか?

db.A.Where(something)/*.Include(a => a.Bs.Select(b => b.C))*/ 
    .SelectMany(x => x.Bs.Select(b => b.C.x)).Distinct(); 
+0

Strange、私の 'Where(x)'は '.Include' afterwadsを許可していません。 – rst

+1

' System.Data.Entity'への参照を追加する必要があります。これを見てください:https://msdn.microsoft.com/en-us/library/gg671236(v=vs.103).aspx?f=255&MSPPError=-2147217396#Anchor_1 –

関連する問題