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

我想对TIMETITLE匹配的项目进行分组。如下图所示。

第一组项目:

  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

知道如何做到这一点吗?

C#Linq-多列匹配的组

您可以使用

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;

如果你想按多个属性分组并在中指定属性,你需要引入新的匿名类型

未经测试,但应该有效。