9

オブジェクトの単純なリストに含まれる LINQ の例をたくさん見てきました。

var intList= new List<int>() { 1, 2, 3 };
var result = db.TableRecords.Where(c => intList.Contains(c.RecordId)).ToList();

私がやろうとしていることは、もう少し複雑に思えます (私は思います)。次のようなコード行を使用すると、必要なリストが得られます。

var xzList = db.Relations.Where(r => someOtherList.Contains(r.zId))
                         .Select(r => new { AId = r.xId, BId = r.zId })
                         .ToList();

そして今、前の例と同様の結果を取得したいのですが、リストには 2 つの int を持つ匿名型が含まれています。では、 の各匿名型の匿名型と等しいresult場所RecordIdを取得するにはどうすればよいでしょうか?TableRecordsAIdxzList

4

2 に答える 2

11

匿名型から値を取得する方法がわからないようです。GunnerL3510 のソリューションを使用してリストにダンプするか、次のようにインライン化することができます。

var result = 
    db.TableRecords
        .Where(c => xzList.Select(n => n.AId)
            .Contains(c.RecordId))
        .ToList();

匿名型の値に名前を付けているため、プロパティと同じようにそれらを参照します。

より構造化されたアプローチを希望する場合は、この方法を使用できます。

于 2012-12-27T22:21:11.847 に答える
0

このようなもの:

db.TableRecords.Select(c=>c.RecordId).Intercept(xzList.Select(n => n.AId)).Any()
于 2014-11-27T09:43:37.753 に答える