Asp.net 嵌套集合中的OrderByDescending在EF 2.1查询中失败

Asp.net 嵌套集合中的OrderByDescending在EF 2.1查询中失败,asp.net,entity-framework,asp.net-core,entity-framework-core,Asp.net,Entity Framework,Asp.net Core,Entity Framework Core,我对这个EF 2.1查询有问题: return await _context.CorrespondenceItems .Include(x => x.Statuses.OrderByDescending(y => y.Date)) .OrderByDescending(x => x.DateCreated) .ToListAsync(); 问题在于Status集合的OrderByDescending。我得到的错误

我对这个EF 2.1查询有问题:

        return await _context.CorrespondenceItems
        .Include(x => x.Statuses.OrderByDescending(y => y.Date))
        .OrderByDescending(x => x.DateCreated)
        .ToListAsync();
问题在于Status集合的OrderByDescending。我得到的错误是:

System.InvalidOperationException: The Include property lambda expression 'x => {from CorrespondenceItemStatus y in x.Statuses orderby [y].Date desc select [y]}' is invalid. The expression should represent a property access: 't => t.MyProperty'. To target navigations declared on derived types, specify an explicitly typed lambda parameter of the target type, E.g. '(Derived d) => d.MyProperty'
这是我的(简化)模型:

公共类对应项
{
[关键]
公共int-RespondenceItemId{get;set;}
公共虚拟列表状态{get;set;
}
公共类对应项状态
{
[关键]
public int-respondenceItemStatusID{get;set;}
public int-respondenceItem\u-respondenceItemId{get;set;}
[外键(“对应项\对应项ID”)]
公共虚拟通信项通信项{get;set;}
公共日期时间日期{get;set;}
}
更新:为了清楚起见,我想要一个按日期降序排列的对应项集合,其状态也按日期降序排列

请尝试下面的代码:

            var result = await _db.CorrespondenceItem
            .Include(i => i.Statuses)
            .Select(r => new CorrespondenceItem
            {
                CorrespondenceItemId = r.CorrespondenceItemId,
                DateCreated = r.DateCreated,
                Statuses = r.Statuses.OrderByDescending(s => s.Date).ToList()
            })
            .OrderByDescending(i => i.DateCreated)
            .ToListAsync();

您可以检查生成查询,它将帮助您调试表达式失败时没有生成查询
            var result = await _db.CorrespondenceItem
            .Include(i => i.Statuses)
            .Select(r => new CorrespondenceItem
            {
                CorrespondenceItemId = r.CorrespondenceItemId,
                DateCreated = r.DateCreated,
                Statuses = r.Statuses.OrderByDescending(s => s.Date).ToList()
            })
            .OrderByDescending(i => i.DateCreated)
            .ToListAsync();