Linq查询分组数据表使用两列

时间:2013-05-24 08:25:16

标签: c# linq datatable

我在这里有一个问题。我是一个新手如此原谅我的术语,我正在查询数据表,我需要根据日期和他们唯一的访问代码对这个数据表进行分组。

var tMainTable = (from System.Data.DataRow b in _tData.data_table.Rows
group b by b["ACCESS_CODE"] into bGroup
select new
{ bGroup });

在我上面的当前分组中,我根据访问代码对数据表进行分组。我的数据表由3个字段组成:DATE,ACCESS_CODE,COUNT。这是因为我无法生成我的数据表AsEnumerable()类型。

所以这一次,我想添加它的条件,即按日期分组......是否有这样的事情:

var tMainTable = (from System.Data.DataRow b in _tData.data_table.Rows
**group b by b["ACCESS_CODE"] AND b["DATE"] into bGroup**
select new
{ bGroup });

感谢您的任何意见。

3 个答案:

答案 0 :(得分:2)

使用匿名类型进行分组:

var codeDateGroups = _tData.data_table.AsEnumerable()
    .GroupBy(r => new { 
        AccessCode = r.Field<string>("ACCESS_CODE"), 
        Date = r.Field<DateTime>("DATE") 
    });

您可以通过Key

访问它
foreach(var group in codeDateGroups)
    Console.WriteLine("Code=[{0}] Date=[{1}]" 
        , group.Key.AccessCode
        , group.Key.Date);

答案 1 :(得分:1)

var tMainTable = (from System.Data.DataRow b in _tData.data_table.Rows
group b by new { AccessCode = b["ACCESS_CODE"], Date = b["DATE"] } into bGroup
select new
{ bGroup });

答案 2 :(得分:1)

var groups =  _tData.data_table.AsEnumerable()
.GroupBy(row=> new {row["ACCESS_CODE"],row["DATE"] });