1

次のラムダ式があります。

query = query.Join( SecondTableSource,
table1 => new
{
    table1 .Field1,
    table1 .Field2
},
table2 => new
{
    table2 .Field1,
    table2 .Field2
},
( table1 , table2 ) => table1 ) ;

ご覧のとおり、最初のテーブルからのみ結果を返していますが、テーブル 2 の列で結果を除外する必要があります。どうすればそれを行うことができますが、それでも戻るだけ IQueryable<table1>ですか?

ありがとう!

変換しようとしている元のコードは次のとおりです。

query = from table1 in Model.Table1s
    join table2 in Model.Table2s
        on new
        {
            table1.field1,
            table1.field2
        }
    equals
        new
        {
            table2.field1,
            table2.Part
        }
    where table2.field.StartsWith( criteria.value )
    select table1;

投稿された最初の2つの回答(これを書いている時点で投稿されているすべて)は機能するはずですが、4を期待しているときに両方とも1つの結果しか返さないため(元のクエリによって返されたように)、正しく変換されていないと思います) .

4

2 に答える 2

2

前にtable2をフィルタリングできませんか?

query = query.Join(SecondTableSource.Where(table2 => table2.MyFieldToFilter == condition),
                   table1 => ...,
                   ...);
于 2013-02-04T22:26:03.840 に答える
0

より複雑なクエリがある場合は、別のオプションがあります...

IEnumerable<MyType1> result = table1.Join(table2,
        t1 => new { t1.Field1, t1.Field2 },
        t2 => new { t2.Field1, t2.Field2 },
        (t1, t2) => new { table1 = t1, table2 = t2 }).
    Where(joinedResults => joinedResults.table2 == //condition).
    Select(filteredResults => filteredResults.table1);
于 2013-02-04T22:53:59.253 に答える