使用LINQ按多列分组并读取未分组列的值

时间:2010-08-23 15:45:35

标签: .net linq group-by

我需要在多个列上对数据表进行分组,并且还要读取未分组列的数据

col1 col2 col3 col4 col5 col6 col7 col8 col16

这里我将它分组在col1,col2 ... col6上。但是在阅读col7 ... col16的值时面临问题

var groupedRows = from myTable in table.AsEnumerable()
                  group myTable by new
                  {
                      Col1 = myTable["Col1"],
                      Col2 = myTable["Col2"],
                      Col3 = myTable["Col3"],
                      Col4 = myTable["Col4"],
                      Col5 = myTable["Col5"],
                      Col6 = myTable["Col6"]
                  }
                  into groupedTable
                  select new
                  {
                      x = groupedTable.Key,
                      y = groupedTable
                  };

我遇到问题的代码是

foreach (var row in groupedRows)
{
    record = new Record();
    record.col1 = row.x.col1.ToString();
    record.col2 = row.x.col2.ToString();
    record.col3 = row.x.col3.ToString();
    record.col4 = row.x.col4.ToString();
    record.col5 = row.x.col5.ToString();
    record.col6 = row.x.col6.ToString();

    var groupdata = groupedRows.Select(x => x.y);
    if (groupdata.Count() > 0)
    {
        var groupdatas = groupdata.First();
        foreach (var item in groupdatas)
        {
        }
    }
}

我正在尝试阅读未归类列的var groupdata = groupedRows.Select(x => x.y);数据,但没有用。

我在从y读取数据时遇到问题。 任何人都可以建议我如何阅读?

1 个答案:

答案 0 :(得分:0)

在此之后,您将得到一个列表列表:即一个组列表,每个组都包含属于该组的行列表。您的groupsTable变量将是该组中行的列表。

这取决于你真正想要分配给你的东西,但如果你明白这一点,希望你能走上正轨。