gpt4 book ai didi

c# - LINQ 查询中的自定义比较器对字符串/数字进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:55 24 4
gpt4 key购买 nike

我编写了一个自定义比较器来对字符串和数字进行排序。这一切都很好。

但是我正在重写我的整个 BLL 以在可能的情况下使用 LINQ,因为我确实喜欢这种语法。现在我正在使用我的自定义比较器。由于 LINQ 语法(基于查询)不允许使用自定义比较器,我现在使用基于方法的 LINQ。

但为了让它工作,我需要做一个中间 ToList(),它再次工作正常,但对我来说看起来有点奇怪?

        var areas = cc.Areas.Where(a => a.ProjectId == ProjectId).ToList()
.OrderBy(a => a.UnitNumber, new Common.Comparers.StringNumericComparer());

现在我不确定这是否与首先执行的 SQL 查询有关,然后在我的 C# 代码端对结果进行排序,但这超出了我的知识范围。ToList() 是否强制在数据库上执行 linq 查询的第一部分?

最佳答案

是的,你的理解是正确的。在 .ToList() 之前,它是一个 IQueryable。在 ToList() 上,将触发数据库查询并将结果提取到内存中,然后对列表进行排序。

您的比较器无法在此之前执行,因为它不会转换为 SQL 查询。

关于c# - LINQ 查询中的自定义比较器对字符串/数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com