2016-01-22 33 views
-1

我有一个SQL日期字段类似于linq选择不同的年份sql日期字段

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

我愿做一个LINQ到实体查询来获取的独特年阵列如

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

我发现一个答案here从以前的问题将拉独特的日期,但我需要翻译成只有几年。

+0

你已经有一个实体类?它看起来怎样? –

+0

不明原因的反对票是不必要的。这个问题已经解决,受访者对答案作了明确的解释。这个问题很明显,他们可以回答。我将不胜感激在其他地方进行的任何非建设性的反对票。 – biggles

回答

3

假设你的实体类看起来是这样的:

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

你可以做鲜明的()

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

假设db是你的DbContext和Orders的对象之前选择DateTime对象的Year属性是基于你的DbContext类的类型DbSet<Order>和Order实体的属性有OrderDate类型DateTime的财产。

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

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

您应该通过lambda参数's'访问'OrderDate',而不是直接访问'Orders' DbSet。 –

+0

是的! 。感谢您注意到这一点 – Shyju

相关问题