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