【问题标题】:Linq to SQL / filter duplicatesLinq to SQL / 过滤重复项
【发布时间】:2014-09-07 13:37:34
【问题描述】:

我在我的 sql server 2012 中有一个视图,其中有几个重复项,我想按最新对它们进行排序并过滤所有其他视图 - 谁能帮助我?

我在 SQL Server 2012 中的看法:

GUID(作为主键)、数字、日期时间和名称

+-----+----------+--------------------------------+-----
| guid  |  number| datetime                       | name
+-----+----------+--------------------------------+------
| b105..| 1234567|2014-07-07T16:32:20.854+02:00:00|Name1
| s1b5..| 1111222|2014-07-06T16:30:21.854+02:00:00|Name2
| b17a..| 1234567|2014-07-06T15:22:17.854+02:00:00|Name1
| f205..| 1233333|2014-07-07T17:40:20.854+02:00:00|Name3
| b11t..| 1233333|2014-07-04T11:12:15.854+02:00:00|Name3
| rt85..| 1111222|2014-07-07T21:55:52.854+02:00:00|Name2
+-------+--------+--------------------------------+-----

如果数字相同,则名称每次都相同。例如数字 1234567 始终是名称 1。

我想过滤我的表,我只有最新的数字而没有重复

所以结果应该是:

+-----+----------+--------------------------------+-----
| guid  |  number| datetime                       | name
+-----+----------+--------------------------------+------
| b105..| 1234567|2014-07-07T16:32:20.854+02:00:00|Name1
| f205..| 1233333|2014-07-07T17:40:20.854+02:00:00|Name3
| rt85..| 1111222|2014-07-07T21:55:52.854+02:00:00|Name2
+-------+--------+--------------------------------+-----

我如何在 Linq 中做到这一点?由于 guid 和日期时间,“不同”不起作用

【问题讨论】:

    标签: c# sql linq filter sql-server-2012


    【解决方案1】:
    var res = list.GroupBy(c => c.name).Select(group => group.OrderBy( c1 => c1.datetime).First()).ToList();
    

    只要将日期时间存储为DateTime 的实例而不是字符串,这应该可以工作。

    【讨论】:

      【解决方案2】:

      您可以通过将元素按 2 列分组来实现。 (号码和姓名)。然后访问分组数据。你可以这样做:

      var query =
              from col in viewData
              group col by new
          {
              col.name,
              col.number,
      
          } into groupedCol
          select new viewData()
          {
              number = groupedCol.Key.number,
              name = groupedCol.Key.name,
              datetime = groupedCol.OrderBy( dateCol => dateCol.datetime).First()
      
          };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-08
        相关资源
        最近更新 更多