我有两个共享两个共同属性的类,Id和Information。
public class Foo
{
public Guid Id { get; set; }
public string Information { get; set; }
...
}
public class Bar
{
public Guid Id { get; set; }
public string Information { get; set; }
...
}
使用LINQ,我如何获取填充的Foo对象列表和填充的Bar对象列表:
var list1 = new List<Foo>();
var list2 = new List<Bar>();
和将每个的ID和信息合并到一个字典中:
var finalList = new Dictionary<Guid, string>();
提前谢谢。
答案 0 :(得分:8)
听起来你可以做到:
// Project both lists (lazily) to a common anonymous type
var anon1 = list1.Select(foo => new { foo.Id, foo.Information });
var anon2 = list2.Select(bar => new { bar.Id, bar.Information });
var map = anon1.Concat(anon2).ToDictionary(x => x.Id, x => x.Information);
(你可以在一个声明中完成所有这些,但我认为这样更清楚。)
答案 1 :(得分:0)
var finalList = list1.ToDictionary(x => x.Id, y => y.Information)
.Union(list2.ToDictionary(x => x.Id, y => y.Information))
.ToDictionary(x => x.Key, y => y.Value);
确保ID是唯一的。如果不是,它们将被第一本字典覆盖。
编辑:添加.ToDictionary(x =&gt; x.Key,y =&gt; y.Value);