【问题标题】:SQL to LINQ group bySQL to LINQ 分组依据
【发布时间】:2010-10-05 03:52:48
【问题描述】:

我正在尝试将以下 SQL 转换为 LINQ。我在 1 group by variable 方面取得了成功,但无法让它发挥作用。任何帮助将不胜感激。

  select ContactID, EventID, Count=count(*) 
  from ScanLogs s, Exhibits e
  where s.ExhibitID = e.ExhibitID
  group by s.ContactID, e.EventID

结果如下所示:

ContactID EventID Count
300009 2000048 2
300009 2000096 1
300036 2000096 1

【问题讨论】:

  • 您介意提供一些来自 ScanLogs 和 Exhibits 的样本数据吗?让测试变得更容易。

标签: c# linq-to-sql group-by


【解决方案1】:

我相信这会做到:

var query = from s in ScanLogs
            from e in Exhibits
            where s.ExhibitID == e.ExhibitID
            group 1 by new { s.ContactID, e.EventID } into g
            select new { g.Key.ContactID, g.Key.EventID, Count = g.Count() };

分组的内容并不重要(在这种情况下为1),您只是在数有多少。

不过,我可能会使用连接。应该是等价的。

var query = from s in ScanLogs
            join e in Exhibits on s.ExhibitID equals e.ExhibitID
            group 1 by new { s.ContactID, e.EventID } into g
            select new { g.Key.ContactID, g.Key.EventID, Count = g.Count() };

【讨论】:

    【解决方案2】:

    另一个使用 join 和 group by 的变量。

    var query = from c in ScanLogs
                join d in Exhibits on c.ExhibitID equals d.ExhibitID
                group new{
                 g.Key.ContactID,
                 g.Key.EventID,
                 Count = g.Count()
                }
                by new {
                  c.ContacID, d.EventID
                } into g
                select g;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-05
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2010-09-15
      • 1970-01-01
      相关资源
      最近更新 更多