我有以下数据的学生列表
/*-----------------------
|Student |
-------------------------
| ID | Name | Dept |
-------------------------
| 101 | Peter | IT |
| 102 | John | IT |
| 103 | Ronald | Mech |
| 104 | Sam | Comp |
-----------------------*/
其他列表说额外的以下数据
/*----------------------
| StudentId | Dept |
------------------------
| 101 | Civil |
| 103 | Chemical |
----------------------*/
现在我想要关注结果
/*-------------------------
|Student |
---------------------------
| ID | Name | Dept |
---------------------------
| 101 | Peter | Civil |
| 102 | John | IT |
| 103 | Ronald | Chemical |
| 104 | Sam | Comp |
-------------------------*/
目前我写了以下逻辑:
foreach(item in Extra)
{
//Search item in Student list
//Update it
}
我需要使用LINQ更有效的方式(不想使用迭代)。
答案 0 :(得分:1)
尝试这样的事情。虽然没有测试它。
var query = from s in student
join e in extra on s.ID == e.StudentId
select new {s.ID, s.Name, (e.Dept != null) ? e.Dept:s.Dept};
答案 1 :(得分:0)
LINQ也在内部使用迭代,因此使用LINQ没有性能优势。因为LINQ具有非常通用的实现,它甚至可能较慢,因为它无法对您的可以在自定义循环中创建的数据做出假设。