LINQ跳过并限制订购会导致奇怪的结果

时间:2019-04-04 07:24:54

标签: c# linq sorting entity-framework-core

我是使用LINQ来查询数据库以获取配置文件。它使用“跳过,限制和排序”顺序加载配置文件,但不能一次全部加载。

  return (
    queryable
        .OrderBy(usr => usr.FirstName)
        .ThenBy(usr => usr.LastName)
        .Skip(skip)
        .Take(limit)
        .Include(usr => usr.Workplaces)
        .ThenInclude(uwp => uwp.Workplace)
        .Include(usr => usr.ProfilePicture)
    );

现在,我开始遇到一些有关订购的问题。可以说我先跳过0并限制为20。这应该给我20个配置文件,按姓氏和姓氏排序。当人们具有相同的姓氏时,它的行为有些奇怪。可以说是检索到了:

0.firstname: A  lastname: a
1.firstname: A  lastname: b
...
19.firstname: P lastname: Å

然后,当我跳过20并限制为10时,我得到以下结果:

20.firstname: P  lastname: A
21.firstname: Q  lastname: A

记录19和20现在位置错误! “ A”位于“Å”之前。我在这里想念什么?我认为姓氏排序不能正常工作,因为应该首先返回记录20,而不是返回记录19。我已经通过使用CultureInfo.CurrentCulture.Name确保正确地将文化设置为瑞典语。我还尝试过将文化与以下建议进行比较:Linq orderby culture (danish, æøå),它只会在运行时崩溃。

0 个答案:

没有答案