我正在嘗試使用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?'返回一個可爲空的整數。 –