0

そこにいるEF/linqの第一人者が、非常に単純なクエリであるべきもの(SQLの場合のように)を手伝ってくれることを願っています。これが私がやろうとしていることの疑似コードです:

クエリ A:

 var query1 = FROM tableA in Models.TableAs
              select tableA

クエリ B:

var query2 = FROM tableB in Models.TableBs
             WHERE tableB.ColumnA IN (query1.results.columnB)

私の実際のクエリはもっと​​複雑で、単純な結合では表現できません。基本的に、2 番目のクエリで値をフィルター処理するために使用する値のリストを取得するには、最初のクエリを実際に実行する必要があります。誰にもアイデアはありますか?

ありがとう!

4

3 に答える 3

1

このようなものかもしれません

var query1 = from tableA in Models.TableAs
          select tableA

var query2 = from tableB in Models.TableBs
         where query1.Any(ta=>tableB.ColumnA==ta.ColumnB);
于 2013-04-29T14:48:49.643 に答える
0

あなたはこれを Entity Framework の間違った方向から見ています。

SQL では、次のように記述します。

SELECT * FROM TABLEA
WHERE TABLEA.COLUMNA IN (TABLEB.COLUMNB)

INを使用。

このようなモデルがある場合:

public class TableA
{
    public TableBEntity TableB {get;set;}
}

public class TableB
{
    public IEnumerable<TableAEntity> TableA {get;set;}
}

EF では、次の方法を試してください。

from myvar in context.TableB select myvar.TableA
于 2013-04-29T14:45:01.267 に答える