我正在尝试使用Linq来旋转数据表。通过这里的回复以及其他一些消息来源,我认为我已经设法实现了这个目标,但是我在完成查询时遇到了一些麻烦(完全是因为我对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栏时我的语法是错误的。任何帮助,这将不胜感激。
通过加入'参考System.Data.DataSetExtensions.dll'你可以使用'Field'方法来访问,而不是诉诸强类型值通过索引器投射和返回'object'类型。例如,'a.Field(“ItemCode”)'将返回一个'字符串'和'a.Field (“Rank”)'将返回一个'int'。使用'int?'返回一个可为空的整数。 –