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

C# 使用两列的Linq查询分组数据表,c#,linq,datatable,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个字段组成:日期、访问代码、计

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

var tMainTable = (from System.Data.DataRow b in _tData.data_table.Rows
group b by b["ACCESS_CODE"] into bGroup
select new
{ bGroup });
在上面的当前分组中,我根据访问代码对数据表进行分组。我的数据表由3个字段组成:日期、访问代码、计数。这是因为我无法将我的数据表
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 });

感谢您的输入。

请使用匿名类型进行分组:

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

对分组使用匿名类型:

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

此.AsEnumerable()未出现在我的自动完成中。。。也许它不适用,我不知道为什么…@Charmie:虽然持有扩展的类位于
System.Data
命名空间中,但它位于默认情况下未添加到项目中的程序集中。将对
System.Data.DataSetExtensions
的引用添加到您的项目中,这样就可以了。屏幕截图。@Charmie:您是否已使用System.Data将此添加到文件的顶部:
?顺便说一句,这里有一个方法:它是从.NET 3.5开始存在的。这个.AsEnumerable()没有出现在我的自动完成中。。。也许它不适用,我不知道为什么…@Charmie:虽然持有扩展的类位于
System.Data
命名空间中,但它位于默认情况下未添加到项目中的程序集中。将对
System.Data.DataSetExtensions
的引用添加到您的项目中,这样就可以了。屏幕截图。@Charmie:您是否已使用System.Data将此添加到文件的顶部:
?顺便说一句,方法是这样的:它从.NET3.5开始就存在了。
var groups =  _tData.data_table.AsEnumerable()
.GroupBy(row=> new {row["ACCESS_CODE"],row["DATE"] });