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

本文关键字:sql 日期 字段 选择 linq | 更新日期: 2023-09-27 18:31:25

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

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

我想做一个 linq 到实体查询以获取一个唯一年份的数组,例如

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

我从上一个问题中找到了一个答案,将提取唯一的日期,但我只需要翻译成年份。

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

假设您的实体类如下所示:

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();

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

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

假设 db 是 DbContext 的对象,并且 Orders 是 DbContext 类上类型 DbSet<Order> 的属性,并且 Order 实体具有类型 DateTimeOrderDate 属性。

或者,如果您已有DateTime对象列表。

var dateTimeList = new List<DateTime>();
var uniqueYears = dateTimeList.Select(s => s.Year).Distinct();