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

时间:2019-03-22 01:56:17

标签: c# sql entity-framework linq

我遇到了一个查询问题,我试图按降序对结果进行排序,但它没有做到。我曾在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(),但这也不能解决问题。

1 个答案:

答案 0 :(得分:0)

按照@SILENT和@D的注释进行操作。您的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(从/位置/选择)与Fluent方法混合使用。 (上方)

以单独的匿名类型返回每个属性似乎没有意义,只是将其展平为一个包,因为匿名类型是为短期生存和立即使用而设计的。