我想通过在一个属性上进行比较,对两个匿名类型数组执行一个互节。集合是具有两个属性Id和名称的任意类型的数组。例如,给定集合一:
{ 1, "Bob",
2, "Jane",
3, "Fred" }和第二集:
{ 2, "",
3, "",
4, "" }是否可以编写一个Intesect语句来获取基于Id的交集并取不为空的名称,因此结果将是
{ 2, "Jane",
3, "Fred" }现在我有
var data = one.Intersect(two, (x, y) => x.Id == y.Id).ToArray();但我不知道如何处理名字的解析,也不知道如何与兰巴达进行比较
发布于 2014-02-11 01:09:38
我想你可以用Join实现你想要的.
var data = one.Join(two,
a => a.Id,
b => b.Id,
(a, b) => new
{
Id = a.Id,
Name = string.IsNullOrEmpty(a.Name) ? b.Name : a.Name
}).ToArray();Fiddle: http://dotnetfiddle.net/zHUE3n
https://stackoverflow.com/questions/21690473
复制相似问题