簡體   English   中英

Linq根據另一個列表查詢對象列表的結果

[英]Linq to query results of list of objects based on another list

我有一個數字列表,如下所示:

1) List<long> list1 : 101, 102, 103

我有一個對象列表,其中一個屬性很長:

2) List<SomeObject> list2: 
   SomeObject[0]- (long)Id : 101,
                  Name: Adam,
                  Address:xxx
   SomeObject[1]- (long)Id : 102,
                  Name: Bran,
                  Address:xxx
   SomeObject[2]- (long)Id : 109,
                  Name: Queen,
                  Address:yyy

我想查詢第二個列表,如果它在list1中有Id。 意思是我應該得到包含以下內容

SomeObject[0]  
SomeObject[1]

嘗試下面的代碼沒有成功:

(from t2 in list2
          where list1 .Any(t => t2.Id.Contains(t)) == true
          select t2);

提前致謝。

您可以使用Enumerable.Contains

var query = from t2 in list2
            where list1.Contains(t2.Id)
            select t2;

如果list1中的值是uniqe,您還可以使用更高效的 Join

var query = from t2 in list2
            join t1 in list1
            on t2.Id equals t1
            select t2;

你的方法不起作用:

where list1.Any(t => t2.Id.Contains(t)) == true

因為t2.Id返回一個沒有Contains方法的long

如果你想使用Any你可以使用它:

where list1.Any(t => t2.Id == t)

您的查詢的問題是您嘗試long調用Contains 相反它應該是list1 .Any(t => t2.Id == t) 但相反,你可以做一個加入。

from t1 in list1
join t2 in list2 on t1 equals t2.Id
select t2

您還可以使用以下代碼段來獲取所需的結果,其中

var result = list2.Where(l2 => list1.Any(l1 => l1 == l2.Id));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM