更多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列。如有任何帮助,我将不胜感激。

更多Linq数据旋转

添加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() }) ;