linq查询不同的日期

use*_*677 3 c# linq

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

using (var ctx = new DBConn())
{
  var q = ctx.Table.Select(r => r.datetimefield).Distinct();
}
Run Code Online (Sandbox Code Playgroud)

Fem*_*ref 12

您正在使用linq-to-sql或EF(我不知道您使用的是哪一个)的故障磕磕绊绊.直接的解决方案是使用该DateTime.Date属性,但是,这两个ORM都不支持,它不映射到SQL方法.

你有两个解决方案:

  1. 使用以下方法急切评估查询ToList:

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


Kob*_*obi 5

假设r.datetimefield是一个DateTime,则可以DateTime.Date用来删除时间部分:

var q = ctx.Table.Select(r => r.datetimefield.Date).Distinct();
Run Code Online (Sandbox Code Playgroud)