我有一个数字列表,如下所示:
1) List<long> list1 : 101, 102, 103
Run Code Online (Sandbox Code Playgroud)
我有一个对象列表,其中一个属性很长:
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
Run Code Online (Sandbox Code Playgroud)
我想查询第二个列表,如果它在list1中有Id.意思是我应该得到包含以下内容
SomeObject[0]
SomeObject[1]
Run Code Online (Sandbox Code Playgroud)
尝试下面的代码没有成功:
(from t2 in list2
where list1 .Any(t => t2.Id.Contains(t)) == true
select t2);
Run Code Online (Sandbox Code Playgroud)
提前致谢.
你可以使用Enumerable.Contains:
var query = from t2 in list2
where list1.Contains(t2.Id)
select t2;
Run Code Online (Sandbox Code Playgroud)
如果list1中的值是uniqe,您也可以使用更高效的 Join:
var query = from t2 in list2
join t1 in list1
on t2.Id equals t1
select t2;
Run Code Online (Sandbox Code Playgroud)
你的方法不起作用:
where list1.Any(t => t2.Id.Contains(t)) == true
Run Code Online (Sandbox Code Playgroud)
因为t2.Id返回long没有Contains方法的东西.
如果你想使用Any你可以使用这个:
where list1.Any(t => t2.Id == t)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |