更多Linq数据旋转
本文关键字:旋转 数据 Linq 更多 | 更新日期: 2023-09-27 18:15:39
我试图使用Linq枢轴数据表。通过这里的回复和其他一些来源,我想我已经设法得到了大部分的方式,但我有一点麻烦完成查询(完全是由于我缺乏对Linq的理解,但我目前的时间表很紧)。数据表如下:
源: Name |ItemCode|Rank
----------------------------
-1 |blah1 |1
-1 |blah2 |2
-1 |blah3 |3
-1 |blah4 |4
*PLACEHOLDER*|blah2 |7
*PLACEHOLDER*|blah1 |22
所需输出: ItemCode |companyWide|myGroup
----------------------------
blah1 |1 |22
blah2 |2 |7
blah3 |3 |
blah4 |4 |
我现在的代码是:
var temp = reportDataTable.AsEnumerable()
.GroupBy(a => a["ItemCode"]).Select(b => new{ItemCode = b.Key,
companyWide = b.Where(a => (string)a["Name"] == "-1").Select(a => a["Rank"]),
myGroup = b.Where(a => (string)a["Name"] == "*PLACEHOLDER*").Select(a => a["Rank"]) }) ;
ItemCode的分组工作,但我猜我的语法是错误的填充其他2列。如有任何帮助,我将不胜感激。
添加FirstOrDefault()到items:
var temp = reportDataTable.AsEnumerable().GroupBy(a => a["ItemCode"]).Select(b =>
new{ItemCode = b.Key,
companyWide = b.Where(a => (string)a["Name"] == "-1").Select(a =>a["Rank"]).FirstOrDefault(),
myGroup = b.Where(a => (string)a["Name"] == "*PLACEHOLDER*").Select(a => a["Rank"]).FirstOrDefault() }) ;