我遇到了一个查询问题,我试图按降序对结果进行排序,但它没有做到。我曾在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(),但这也不能解决问题。
答案 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方法混合使用。 (上方)
以单独的匿名类型返回每个属性似乎没有意义,只是将其展平为一个包,因为匿名类型是为短期生存和立即使用而设计的。