【问题标题】:Count values from a column计算列中的值
【发布时间】:2010-12-25 17:31:50
【问题描述】:

我想计算一列中的不同值。列包含这样的数据

Locations
Street1
Street2
Street3
Street1,Street2
Street2,
Street1,Street2,Street3

现在计数应该是这样的
街道 1 (3)
街道 2 (4)
街道 3 (2)

【问题讨论】:

  • 在数据库中只是逗号分隔吗?这不会让生活变得轻松......
  • wtf?你的数据库是什么? sql server 还是 excel? :)
  • @RPM1984:linq-to-sql 标签表示 SQL Server。
  • @Ani - 是的,我知道,这是个玩笑。 :)
  • @RPM1984:啊,我明白了。抱歉,看来我今天胖了。 :)

标签: c# linq-to-sql


【解决方案1】:

我想不出使用 LINQ to SQL 的简单方法。

当然,一种简单的方法(如果您负担得起的话)是将表中的所有行返回到客户端,然后使用 LINQ to Objects 进行查询。

var query = myDataContext
           .MyTable
           .AsEnumerable()
           .SelectMany(row => row.Locations.Split(','))
           .GroupBy(location => location)
           .Select(group => new { Location = group.Key, Count = group.Count() });

如果您想要一个 字符串 序列而不是该格式,请将最后一行替换为:

.Select(group => string.Format("{0} ({1})", group.Key, group.Count());

另一方面,我强烈建议标准化您的数据库架构。将分隔列表存储在列中不是一个好主意。

【讨论】:

    【解决方案2】:
    var result = Locations
        .SelectMany(s => s.Split(','))
        .GroupBy(s => s, (loc,b) => new { loc, b.ToList().Count});
    

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 2015-09-23
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      相关资源
      最近更新 更多