0

私はこのLinqクエリを持っていますが、それを単純化しようとしました:

  List<A> LR = (from a in ent.A
                              join b in ent.B on a.ID equals b.idarticle
                              join c in ent.C on b.idB equals c.id
                              select new A()
                              { name=a.name, surname = c.surname

    }).toList();

簡単に言うと、テーブルCから(クロステーブルBを介して)取得したAのフィールドが必要です。これにより、Aの「name」とCの「surname」が新しいAを構成します。

しかし、「エンティティタイプAを構築できません」と表示されます...匿名タイプでも問題ありませんが...取得できますか?新しいクラスタイプが必要で、それを設定する必要があることはわかっていますが、これはもっと短いです。ありがとう、Saverio

4

1 に答える 1

2

このエラーは、エンティティ フレームワークの制限に関係している可能性があります。したがって、ef に匿名オブジェクトを返させてから、それを次のように変換できます。List<A>

 List<A> LR = (from a in ent.A
                              join b in ent.B on a.ID equals b.idarticle
                              join c in ent.C on b.idB equals c.id
                              select new 
                              { name=a.name, surname = c.surname

    })toList().Select(anon => new A() { name=anon.name, surname = anon.surname });
于 2012-06-22T10:49:36.460 に答える