2016-01-22 67 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

相關問題