[英]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.