C# OrderByDescending在我的LINQ查询中不起作用

C# OrderByDescending在我的LINQ查询中不起作用,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,我遇到了一个查询问题,我试图通过降序对结果进行排序,但它没有这样做。我在stackoverflow上看过几篇类似的文章,但没有一个解决方案是有效的。我想知道是否有人能指出我的代码有什么问题。以下是查询中与问题相关的部分: from followup in ctx.FollowUps .Where(f => f.DestEntityId == user.Id && f.DestEntityType == (int)ContactEntityTy

我遇到了一个查询问题,我试图通过降序对结果进行排序,但它没有这样做。我在stackoverflow上看过几篇类似的文章,但没有一个解决方案是有效的。我想知道是否有人能指出我的代码有什么问题。以下是查询中与问题相关的部分:

from followup in ctx.FollowUps
    .Where(f => f.DestEntityId == user.Id 
           && f.DestEntityType == (int)ContactEntityTypeEnum.User)
    .OrderByDescending(x => x.AddDate)
select new
{ 
    user = new { Firstname = user.Firstname },
    followup = new { followup.NextFollowUpDate }
});

我还尝试在.OrderByDescending()之前添加.ToList(),但这也没有解决问题

根据@SILENT&@D.Shih的评论,你的Linq表情看起来有点奇怪

var followUps =  ctx.FollowUps
    .Where(f => f.DestEntityId == user.Id 
           && f.DestEntityType == (int)ContactEntityTypeEnum.User)
    .OrderByDescending(x => x.AddDate)
    .Select(x => new
    { 
        UserFirstname = user.Firstname,
        AddDate = x.AddDate,
        FollowupDate = x.NextFollowUpDate
    }).ToList();
这将按AddDate而不是NextFollowUpDate对结果进行排序,因此我将AddDate添加到输出中只是为了避免两者之间的混淆,因为我不知道您是如何根据仅看到NextFollowUpDate来评估结果是否有序的。我不建议将LinQL(from/where/select)与Fluent方法混合使用。(上文)


在单独的匿名类型中返回每个单独的属性似乎没有什么意义,只是将其扁平化为一个包,因为匿名类型旨在缩短生命和立即消费。

有两种不同的方法来形成LINQ。我建议您删除“中的后续”。另外,在运行选择之前,请验证orderbydescending是否正常工作。您在
AddDate
字段上按排序,但您在
select
NextFollowUpDate
上按排序,为什么要使用匿名对象来携带一个字段?@D-Shih我需要按添加的日期排序,但显示跟进日期。。没有问题,怎么不起作用?您也可以在选择中添加AddDate应用这些更改后仍然存在问题吗?另一种可能是AddDate上的数据类型。它是日期时间还是类似于本地化字符串的东西?答案的适用性将完全取决于问题中细节的质量和相关性。是的,我刚刚将整个查询改写为方法语法,现在似乎工作正常,谢谢!