fyo*_*anz 0 .net c# linq performance
我有两个对象列表(列表1和列表2),我需要从列表1创建第三个对象列表,它们与列表2中的至少一个对象共享一个属性值.我创建了以下linq查询来执行此操作,但是,它很慢(在很大程度上,毫无疑问,因为两个起始列表最多可以包含200,000个对象).
(from obj1 in _list1
from obj2 in _list2
where obj1.SpecialId == obj2.SpecialId
select obj1)
.ToList();
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法在代码中实现它(可能首先没有使用linq)?
您可以使用LINQ Join执行此操作.
查询语法:
var result = (from obj1 in _list1
join obj2 in _list2 on obj1.SpecialId equals obj2.SpecialId
select obj1
).ToList();
Run Code Online (Sandbox Code Playgroud)
方法语法:
var result = _list1.Join(_list2, obj1 => obj1.Id, obj2 => obj2.Id, (obj1, obj2) => obj1).ToList();
Run Code Online (Sandbox Code Playgroud)
根据我的简单测试,版本Join比原始版本快约5-6倍.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |