拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如果包含查询具有takelast限制器,则Linq查询失败

如果包含查询具有takelast限制器,则Linq查询失败

白鹭 - 2022-03-24 1981 0 0

我想使用这个查询,所以我不会得到所有子行,而是最后 10 个。

var list = await _context.Parent
                .Include(gs => gs.Child
                                    .OrderBy(gsm => gsm.Time)
                                    .TakeLast(10))
                .ToListAsync();

try catch 关闭后出现以下错误讯息:

如何设定查询字符串以获取最后一个子行?

uj5u.com热心网友回复:

这不是Include方法的作业原理。正如例外讯息中的示例所暗示的,传递的谓词的预期回传值是原始物件的导航属性。它的用途只是定义应在查询结果中加载哪些导航属性。

在您的示例中,您首先要定义应加载子导航:

var list = await _context.Parent
                .Include(parent => parent.Child)
                .ToListAsync();

然后在第二步中,您需要执行以下操作:

list.ForEach(parent => parent.Child
                       .OrderBy(gsm => gsm.Time)
                       .TakeLast(10));

有关该Include方法的更多信息,请参见 microsoft 档案:https : //docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.entityframeworkqueryableextensions.include? view = efcore- 5.0

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *