[英]C# Data table how to concat two tables rows vertically using linq
如何使用linq从两个表垂直合并行,我已经为此编写了查询,但是它添加到第一行旁边,因此我将列数加倍,但是我想通过下一行合并。
var dd4 = from tbl in dataTb.AsEnumerable()
join dpi in rawDataTable.AsEnumerable() on tbl["Account_No"] equals dpi["Account_No"]
select tbl.ItemArray.Concat(dpi.ItemArray).ToArray();
它给我的结构像
col1 col2 col3 .... col24但我的表只有12列,因此它旁边要添加,但是我如何在12列结束后添加,然后应该开始新行。
dataTb表数据:
chNo Chunit val1 val2 val3 val4
1 kwh 2010 2011 2012 2009
2 kvarh 2012 2011 2008 2009
rawDataTable数据:
chNo Chunit val1 val2 val3 val4
1 kw 2.2 2.1 2.1 2.0
2 kvar 1.2 1.1 1.1 1.0
它是这样添加的:
1 kwh 2010 2011 2012 2009 1 kw 2.2 2.1 2.1 2.0
1 kwh 2010 2011 2012 2009 2 kvar 1.2 1.1 1.1 1.0
2 kvarh 2012 2011 2008 2009 1 kw 2.2 2.1 2.1 2.0
2 kvarh 2012 2011 2008 2009 2 kvar 1.2 1.1 1.1 1.0
但我想这样:
1 kwh 2010 2011 2012 2009
1 kw 2.2 2.1 2.1 2.0
2 kvar 1.2 1.1 1.1 1.0
2 kvarh 2012 2011 2008 2009
1 kw 2.2 2.1 2.1 2.0
2 kvar 1.2 1.1 1.1 1.0
目前正在:但想要像上面那样(对于Yograj)
1 kwh 2010 2011 2012 2009
2 kvarh 2012 2011 2008 2009
1 kw 2.2 2.1 2.1 2.0
2 kvar 1.2 1.1 1.1 1.0
1 kw 2.2 2.1 2.1 2.0
2 kvar 1.2 1.1 1.1 1.0
谢谢,@ nag。
您应该尝试此查询
var dd4 = from tbl in dataTb.AsEnumerable()
join dpi in rawDataTable.AsEnumerable()
on tbl["Account_No"] equals dpi["Account_No"]
select new {datarows = new []{ tbl, dpi}};
var resultDataTable = dd4.SelectMany(x=>x.datarows).CopyToDataTable();
您可以从第二个获得重复,但不能从第一个获得重复。
var resultDataTable = dd4.Select(x=>x.datarows.First()).Distinct()
.Concat(dd4.Select(x=>x.datarows.Last()))
.CopyToDataTable();
尝试此以获得所需的输出
var records = from x in dd4
group x by x.datarows.First() into y
select y;
List<DataRow> rows = new List<DataRow>();
foreach(var item in records)
{
rows.Add(item.Key);
rows.AddRange(item.ToList().Select(x=>x.datarows.Last()));
}
var resultDataTable = rows.CopyToDataTable();
希望会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.