5
public class MyObject1
{
    public  Guid g1;
    public Guid g2;
    public Guid g3;
}

public class MyObject2
{
    public Guid g4;
}


List<MyObject1> list1;
List<MyObject2> list2;

MyObject1.g2 == MyObject2.g4 で、MyObject2 オブジェクトがリスト 2 にある list1 のすべての MyObject1 オブジェクトを返す LINQ クエリが必要です。

これを多数のステップで実行するコードを作成しましたが、1回の反復で実行できると思います。

のようなもの

var n = list1.Select(p=> p.g2).ToList()

var o = list2.Intersect(n)

しかし、今度は o を使用して list1 を調査する必要がありますが、これは厄介です

4

3 に答える 3

14

結合が必要なようです:

var query = from x1 in list1
            join x2 in list2 on x1.g2 equals x2.g4
            select x1;

または拡張メソッドの構文で:

var query = list1.Join(list2, x1 => x1.g2, x2 => x2.g4, (x1, x2) => x1);

これはからのアイテムのみを提供することに注意してくださいlist1-対応するアイテムも必要な場合、それはlist2簡単です:

var query = from x1 in list1
            join x2 in list2 on x1.g2 equals x2.g4
            select new { x1, x2 };
于 2013-04-05T21:25:40.417 に答える
8
var query = list1.Where(l1 => list2.Any(l2=> l2.g4 == l1.g2));
于 2013-04-05T21:32:06.967 に答える