我创建了一个包含两列的数据表,“Function”和“Date”。此表记录了在网站上使用每个n函数的日期。我想提取表中出现特定功能(如“访问”)的次数。任何帮助将不胜感激。
DataTable table = new DataTable();
table.Columns.Add("Function", typeof(string));
table.Columns.Add("Date", typeof(datetime));
table.Rows.Add(Access, 01/08/2012);
table.Rows.Add(Load, 01/08/2012);
table.Rows.Add(Save, 01/08/2012);
table.Rows.Add(Access, 02/08/2012);
table.Rows.Add(Print, 02/08/2012);
int accessCount = 0;
foreach (DataRow row in table.Rows)
{
if (row["Function"] == "Access")
{
accessCount++;
}
}
答案 0 :(得分:0)
var results = table.AsEnumerable()
.GroupBy(row => row.Field<string>("Function"))
.Select(group => new
{
Function = group.Key,
Count = group.Count(),
});
答案 1 :(得分:0)
你可以使用linq
var result = from rec in table.AsEnumerable
group rec by rec.Field<string>("Function") into g
select new { Function = g.Key, Count = g.Count()}
答案 2 :(得分:0)
您可以使用Linq-To-Datatable
和Enumerable.GroupBy
按功能分组。然后,您可以使用ToDictionary
构建一个字典,其函数为key,count为value:
var functionLookup = table.AsEnumerable()
.GroupBy(r => r.Field<string>("Function"))
.ToDictionary(g => g.Key, g => g.Count());
int accessCount = functionLookup["Access"]; // 2
请注意,默认情况下它区分大小写。如果您希望它不区分大小写,则需要为密钥传递适当的IEqualityComparer
,在这种情况下:
.ToDictionary(g => g.Key, g => g.Count(), StringComparer.OrdinalIgnoreCase);