linq查询不同的日期

时间:2011-03-13 12:29:11

标签: c# linq

在下面的查询中,如何删除日期时间列的de time部分以仅获取不同的日期?

using (var ctx = new DBConn())
{
  var q = ctx.Table.Select(r => r.datetimefield).Distinct();
}

2 个答案:

答案 0 :(得分:11)

你在使用linq-to-sql或EF(我不知道你正在使用哪一个)的过程中遇到了麻烦。直接的解决方案是使用DateTime.Date属性,但是,这两个ORM都不支持,它不映射到SQL方法。

您有两种解决方案:

  1. 使用ToList

    热切评估查询
    var q = ctx.Table.ToList().Select(r => r.datetimefield.Date).Distinct();
    
  2. 创建一个仅详细说明数据库中日期组件的字段。这是我经常去的方式,因为你可以留在数据库中并在那里执行查询。

答案 1 :(得分:4)

假设r.datetimefield是DateTime,您可以使用DateTime.Date删除时间组件:

var q = ctx.Table.Select(r => r.datetimefield.Date).Distinct();