我有一个SQL日期字段类似于linq选择不同的年份sql日期字段
| ----日期---- | 2016年1月22日 1986年2月3日 1992年12月9日 2016年10月9日
我愿做一个LINQ到实体查询来获取的独特年阵列如
var years = {"2016", "1986", "1992"}
我发现一个答案here从以前的问题将拉独特的日期,但我需要翻译成只有几年。
我有一个SQL日期字段类似于linq选择不同的年份sql日期字段
| ----日期---- | 2016年1月22日 1986年2月3日 1992年12月9日 2016年10月9日
我愿做一个LINQ到实体查询来获取的独特年阵列如
var years = {"2016", "1986", "1992"}
我发现一个答案here从以前的问题将拉独特的日期,但我需要翻译成只有几年。
假设你的实体类看起来是这样的:
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();
你可以做鲜明的()
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();
您应该通过lambda参数's'访问'OrderDate',而不是直接访问'Orders' DbSet。 –
是的! 。感谢您注意到这一点 – Shyju
你已经有一个实体类?它看起来怎样? –
不明原因的反对票是不必要的。这个问题已经解决,受访者对答案作了明确的解释。这个问题很明显,他们可以回答。我将不胜感激在其他地方进行的任何非建设性的反对票。 – biggles