Выражение Linq - PullRequest
       6

Выражение Linq

0 голосов
/ 04 марта 2010

У меня есть 2 списка. Первый - это CountryId-список, который может выглядеть следующим образом

036
208
999

Второй список - это список coundryId to Name, который может выглядеть следующим образом:
036, АВСТРАЛИЯ
208, ДАНИЯ
380, ИТАЛИЯ
578, НОРВЕГИЯ

Результат будет таким:
АВСТРАЛИЯ
ДАНИЯ
НЕИЗВЕСТНЫЙ ID (999)

Как я могу сделать запрос linq, который решает эту проблему?

Ответы [ 2 ]

0 голосов
/ 04 марта 2010

Используйте LinqPad для демонстрации небольшой части кода.
Попробуйте это решение:

List<string> ids = new List<string>(){"036","208","999"};
Dictionary<string,string> data = new Dictionary<string,string>(){
             {"036","AUSTRALIA"},  {"208","DENMARK"},
             {"380","ITALY"},{"578","NORWAY"}};
var res = from id in ids 
          from d in data
          where id == d.Key
          select d.Value;
res = res.Union(from id in ids
                where !(from d in data select d.Key).Contains(id)
                select "UNKNOWN ID ("+id+")");
res.Dump();
0 голосов
/ 04 марта 2010

Решением может быть реализация левого внешнего соединения

Вот ресурс с примером - Как: выполнить левые внешние соединения (Руководство по программированию в C #)

DefaultIfEmpty() будет вашей неизвестной страной

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