Linq to sql Linq2Sql如何获得所有不同的日期而不使用时间部分
我正在使用SQLServer2005Express 我在包含日期和时间的表中有一个datetime字段 我想从表中选择不同的日期,忽略时间部分 我使用了此代码,但忽略了order by!(生成的sql不包含order by): 任何关于如何做到这一点的想法都是欢迎的 感谢您尝试,它可以让您查看生成的SQL。玩不同的组合。试试这个:Linq to sql Linq2Sql如何获得所有不同的日期而不使用时间部分,linq-to-sql,Linq To Sql,我正在使用SQLServer2005Express 我在包含日期和时间的表中有一个datetime字段 我想从表中选择不同的日期,忽略时间部分 我使用了此代码,但忽略了order by!(生成的sql不包含order by): 任何关于如何做到这一点的想法都是欢迎的 感谢您尝试,它可以让您查看生成的SQL。玩不同的组合。试试这个: var comments = from c in db.Comments select c.Time.Day + "/" + c.Tim
var comments = from c in db.Comments
select c.Time.Day + "/" + c.Time.Month + "/" + c.Time.Year).Distinct();
comments = comments.OrderBy(c => c.Time);
使用类型的属性
或
SQL专家可以告诉您哪一个更好
订单被忽略
是的,你是在指示linq先下订单,然后下订单。linq中的Distinct是一种破坏顺序的操作。您必须在以下内容之后添加orderby:
query = query.Distinct().OrderBy(x => x);
此外,使用字符串操作来执行日期逻辑也是不道德的。您应该使用DateTime的Date属性进行投影。如果您能确保[Time]列不会为空,我看不出这个想法有任何问题,我们“人类”更容易阅读: 或按逆时间顺序排序:
var dates = (from c in db.Comments
orderby c.Time.Year descending, c.Time.Month descending, c.Time.Day descending
select c.Time.Day + "/" + c.Time.Month + "/" + c.Time.Year).Distinct();
var dates = (from c in db.Comments
select c.Time.Date).Distinct().OrderBy(d => d);
query = query.Distinct().OrderBy(x => x);
var dates = (from c in db.Comments
orderby c.Time.Year, c.Time.Month, c.Time.Day
select c.Time.Day + "/" + c.Time.Month + "/" + c.Time.Year).Distinct();
var dates = (from c in db.Comments
orderby c.Time.Year descending, c.Time.Month descending, c.Time.Day descending
select c.Time.Day + "/" + c.Time.Month + "/" + c.Time.Year).Distinct();