林克的表情

时间:2010-03-04 08:23:13

标签: linq join

我有2个清单。第一个是CountryId列表,看起来像这样

036
208个
999个

第二个列表是一个coundryId to Name列表,如下所示:
036,澳大利亚
208,丹麦
380,意大利
578,NORWAY

结果如下:
澳大利亚
丹麦
身份证明(999)

如何制作解决此问题的linq查询?

2 个答案:

答案 0 :(得分:0)

解决方案可能是实现左外连接

这是一个带有示例的资源 - How to: Perform Left Outer Joins (C# Programming Guide)

DefaultIfEmpty()将是您未知的国家/地区

答案 1 :(得分:0)

使用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();