linq选择不同的年份sql日期字段

时间:2016-01-22 16:00:18

标签: c# sql-server linq date entity

我有一个记录的SQL表,日期字段类似于

| ---- ----日期|   2016年1月22日   1986年2月3日   1992年12月9日   2016年10月9日

我想做一个linq to entity查询来获得一系列独特的年份,例如

var years = {"2016", "1986", "1992"}

我发现前一个问题的答案here会提取独特的日期,但我只需要翻译成几年。

2 个答案:

答案 0 :(得分:4)

假设您的实体类看起来像这样:

public class MyEntity
{
    public int MyEntityId { get; set; }
    public DateTime DateTimeProperty { get; set; }
}

然后您的查询将如下所示:

var unique_years =
    context
    .MyEntities
    .Select(s => s.DateTimeProperty.Year)
    .Distinct()
    .ToList();

答案 1 :(得分:0)

在执行Distinct()之前,您可以选择DateTime对象的Year属性

var uniqueYears = db.Orders.Select(s => s.OrderDate.Year).Distinct();

假设db是DbContext的对象,而Orders是类型为DbSet<Order>的DbContext类的属性,而Order实体具有类型为{{OrderDate的属性1}}。

如果您已有DateTime个对象的列表。

DateTime