LINQ запрос для получения результата - PullRequest
1 голос
/ 05 мая 2011

У меня есть список учеников с данными ниже

/*-----------------------
|Student                |
-------------------------
| ID  | Name   | Dept   |
-------------------------
| 101 | Peter  | IT     |
| 102 | John   | IT     |
| 103 | Ronald | Mech   |
| 104 | Sam    | Comp   |
-----------------------*/

Другой список говорит Extra с данными ниже

/*----------------------
| 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 ]

1 голос
/ 05 мая 2011

Попробуйте что-нибудь подобное. Хотя не проверял.

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};
0 голосов
/ 05 мая 2011

LINQ также использует итерацию для внутреннего использования, поэтому при использовании LINQ выигрыш в производительности отсутствует. Поскольку LINQ имеет очень общие реализации, он может даже быть медленнее , потому что он не может делать предположения о ваших данных, которые вы можете сделать в своем пользовательском цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...