C# 多个linq orderby不工作
我有多个C# 多个linq orderby不工作,c#,linq,entity-framework,C#,Linq,Entity Framework,我有多个OrderBy,但只有第一个order列在工作 public static List<vwData> GetAllData(string startDate, string endDate) { DateTime dtStart = Convert.ToDateTime(startDate).Date; DateTime dtEndDate = Convert.ToDateTime(endDate).Date; var entities = new
OrderBy
,但只有第一个order列在工作
public static List<vwData> GetAllData(string startDate, string endDate)
{
DateTime dtStart = Convert.ToDateTime(startDate).Date;
DateTime dtEndDate = Convert.ToDateTime(endDate).Date;
var entities = new DataEntities();
var query = from c in entities.vwData
let eventDate = EntityFunctions.TruncateTime(c.EventCreateDate)
orderby c.EventCreateDate ascending, c.StartDateTime ascending
where eventDate >= dtStart && eventDate <= dtEndDate
select c;
return query.ToList();
}
公共静态列表GetAllData(字符串startDate、字符串endDate)
{
DateTime dtStart=Convert.ToDateTime(startDate).Date;
DateTime dtEndDate=Convert.ToDateTime(endDate).Date;
var entities=新数据实体();
var query=来自entities.vwData中的c
让eventDate=EntityFunctions.TruncateTime(c.EventCreateDate)
orderby c.EventCreateDate升序,c.StartDateTime升序
其中eventDate>=dtStart&&eventDateOrderby应在条件检查之后,默认顺序为升序
var query = from c in entities.vwData
let eventDate = EntityFunctions.TruncateTime(c.EventCreateDate)
where eventDate >= dtStart && eventDate <= dtEndDate
orderby c.EventCreateDate, c.StartDateTime
select c;
return query.ToList();
考虑使用,然后使用:
public static List<vwData> GetAllData(string startDate, string endDate)
{
DateTime dtStart = Convert.ToDateTime(startDate).Date;
DateTime dtEndDate = Convert.ToDateTime(endDate).Date;
var entities = new DataEntities();
var query = from c in entities.vwData
let eventDate = EntityFunctions.TruncateTime(c.EventCreateDate)
orderby c.EventCreateDate ascending
thenby c.StartDateTime ascending
where eventDate >= dtStart && eventDate <= dtEndDate
select c;
return query.ToList();
}
公共静态列表GetAllData(字符串startDate、字符串endDate)
{
DateTime dtStart=Convert.ToDateTime(startDate).Date;
DateTime dtEndDate=Convert.ToDateTime(endDate).Date;
var entities=新数据实体();
var query=来自entities.vwData中的c
让eventDate=EntityFunctions.TruncateTime(c.EventCreateDate)
orderby c.EventCreateDate升序
然后,c.开始时间上升
其中eventDate>=dtStart&&eventDate尝试以下查询。它将帮助您:
var query = entities.vwData.Where(i => EntityFunctions.TruncateTime(i.OrderDate) >= dtStart && EntityFunctions.TruncateTime(i.OrderDate) <= dtEndDate )
.OrderBy(j => j.EventCreateDate)
.ThenBy(k => k.StartDateTime)
.Select(m => m);
return query.ToList();
var query=entities.vwData.Where(i=>EntityFunctions.TruncateTime(i.OrderDate)>=dtStart&&EntityFunctions.TruncateTime(i.OrderDate)j.EventCreateDate)
.ThenBy(k=>k.StartDateTime)
.选择(m=>m);
返回query.ToList();
Query expression syntax不包含thenby
clausehi-Siva,我在使用您的linq解决方案时遇到一个错误,它说带有语句体的lambda表达式无法转换为表达式treeQuery表达式语法不包含thenby
clauseca。您可以提供示例输入数据和预期的ou吗tput?您的代码似乎还可以,为什么您认为只有第一个订单有效?仍然没有订购第二个订单
var query = entities.vwData.Where(i => EntityFunctions.TruncateTime(i.OrderDate) >= dtStart && EntityFunctions.TruncateTime(i.OrderDate) <= dtEndDate )
.OrderBy(j => j.EventCreateDate)
.ThenBy(k => k.StartDateTime)
.Select(m => m);
return query.ToList();