我正在尝试使用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列时我的语法错误。对此的任何帮助将不胜感激。
答案 0 :(得分:1)
为项目添加了FirstOrDefault():
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() }) ;