C#Linq-多列匹配的组
本文关键字:C#Linq- | 更新日期: 2023-09-27 18:24:38
我需要将两个或多个字段匹配的项目分组在一起。我不太清楚如何做到这一点。
以下是一些示例数据:
TIME | TITLE | CHANNEL
---------+-------------------------+---------------
10:00 | Liverpool-Manchester | Viasat
10:00 | Liverpool-Manchester | Viasat HD
10:00 | Bla-debla | OtherChannel
10:00 | team1-team2 | SomeChannel
10:00 | team1-team2 | SomeChannel HD
我想对TIME
和TITLE
匹配的项目进行分组。如下图所示。
第一组项目:
10:00 | Liverpool-Manchester | Viasat
10:00 | Liverpool-Manchester | Viasat HD
第二组项目:
10:00 | Bla-debla | OtherChannel
第三组项目:
10:00 | team1-team2 | SomeChannel
10:00 | team1-team2 | SomeChannel HD
知道如何做到这一点吗?
您可以使用
group x by new { x.Time, x.Title}
假设您的输入是DataTable
。
var dataQ = from row in data.AsEnumerable()
group row by new {
time = row.Field<DateTime>("time"),
title = row.Field<String>("title")
} into GrpTimeTitle
select new {
Time = GrpTimeTitle.Key.time,
Title = GrpTimeTitle.Key.title,
Count = GrpTimeTitle.Count(),
FirstChannel = GrpTimeTitle.First().Field<String>("channel")
};
请尝试以下操作:
from c in collection
group c.Title by new {c.Title,c.Time} into t
where t.Count()>1
select t;
如果你想按多个属性分组并在中指定属性,你需要引入新的匿名类型
未经测试,但应该有效。