LINQ合并结果按行 [英] LINQ Merging results in rows
本文介绍了LINQ合并结果按行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个LINQ查询,它返回一组行.结构是:
I have a LINQ query which returns a set of rows. The structure is:
NAME, col1, col2, col3, col4
name1 1 null null null
name1 null 1 null null
name1 null null 1 1
因此,我希望包含一行内容
As a result I want to have one row containing
name1 1 1 1 1
因此,我想按名称对这些结果进行分组并合并(总和?)其他列,因此,如果我在一列中的某行中不存在null-我将收到除null之外的任何内容.
So I want to group those results by name and merge (sum?) the other columns so if I have not null in one of the rows in a column - I will receive anything except null.
感谢帮助!
推荐答案
class MyObj
{
public string Name { get; set; }
public int? Col1 { get; set; }
public int? Col2 { get; set; }
public int? Col3 { get; set; }
public int? Col4 { get; set; }
}
List<MyObj> l = new List<MyObj> {
new MyObj {Name = "name1", Col1 = 1 },
new MyObj {Name = "name1", Col2 = 1 },
new MyObj {Name = "name1", Col3 = 1 },
new MyObj {Name = "name1", Col4 = 1 }
};
var qry = from o in l
group o by o.Name into g
select new
{
Name = g.Key,
Col1 = g.Any(e => e.Col1.HasValue) ? (int?)1 : null,
Col2 = g.Any(e => e.Col2.HasValue) ? (int?)1 : null,
Col3 = g.Any(e => e.Col3.HasValue) ? (int?)1 : null,
Col4 = g.Any(e => e.Col4.HasValue) ? (int?)1 : null
};
这篇关于LINQ合并结果按行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文