Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq查询不同日期_C#_Linq - Fatal编程技术网

C# linq查询不同日期

C# linq查询不同日期,c#,linq,C#,Linq,在下面的查询中,如何删除datetime列的de time部分以仅获取不同的日期 using (var ctx = new DBConn()) { var q = ctx.Table.Select(r => r.datetimefield).Distinct(); } 假设r.datetimefield是一个DateTime,您可以使用删除时间组件: var q = ctx.Table.Select(r => r.datetimefield.Date).Distinct();

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

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

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

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

您遇到了linq到sql或EF的错误(我不知道您使用的是哪一个)。直截了当的解决方案是使用
DateTime.Date
属性,但是,这在两种ORM中都不受支持,它不映射到SQL方法

您有两种解决方案:

  • 使用
    ToList
    对查询进行即时评估:

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


  • 不能,至少不能使用linq to sql或EF,因为
    Date
    属性未映射到sql方法。Date属性通过value.Date可用,但我得到错误“指定的类型成员'Date'在linq to Entities中不受支持”是的,这就是我要暗示的。您不能在查询中使用
    Date
    属性,因为EF没有将其映射到SQL方法。我个人认为这是一个巨大的错误。是的,如果
    datetimefield
    是一个
    可为空的
    ,则需要
    值。但是请注意,这会将查询推入内存,这可能需要很长时间进行大量查询。你应该仔细研究第二点,从长远来看,这会帮你省去很多麻烦。事实上,有一种方法可以做到这一点,看看这个答案:这个问题的答案是正确的,你想使用EntityFunctions.TruncateTime