gpt4 book ai didi

c# - Linq根据另一个列表查询对象列表的结果

转载 作者:行者123 更新时间:2023-11-30 14:07:48 24 4
gpt4 key购买 nike

我有一个数字列表,如下所示:

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

我想查询第二个列表是否在列表 1 中有 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 中的值是唯一的,您还可以使用 more efficient 加入:

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)

关于c# - Linq根据另一个列表查询对象列表的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38202595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com