LINQ查询获取结果

时间:2011-05-05 09:15:52

标签: linq linq-to-entities

我有以下数据的学生列表

/*-----------------------
|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更有效的方式(不想使用迭代)。

2 个答案:

答案 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具有非常通用的实现,它甚至可能较慢,因为它无法对您的可以在自定义循环中创建的数据做出假设。