首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当原始查询使用.OrderBy子句时,LINQ .OrderBy().ThenBy()操作符是否多余?

当原始查询使用.OrderBy子句时,LINQ .OrderBy().ThenBy()操作符是否多余?
EN

Stack Overflow用户
提问于 2013-11-22 21:44:05
回答 2查看 262关注 0票数 3

如果用于填充泛型列表的SQL查询命令的结果集如下(List<InventoryItem> inventoryItems是填充的):

代码语言:javascript
复制
SELECT id, pack_size, description, department+(subdepartment/100) AS Dept, vendor_id, vendor_item, ave_cost, unit_list FROM t_inv ORDER BY id, pack_size

在随后的LINQ代码中使用...is ().ThenBy()是多余的(在我看来是这样,但我想验证),如下所示:

代码语言:javascript
复制
public IEnumerable<InventoryItem> Get(string ID, int packSize, int CountToFetch)
{
    return inventoryItems
        .Where(i => (i.Id.CompareTo(ID) == 0 && i.PackSize > packSize) || i.Id.CompareTo(ID) > 0)
        .OrderBy(i => i.Id)
        .ThenBy(i => i.PackSize)
        .Take(CountToFetch);
}

我可能能负担得起额外额外的Purina周星驰所需的少量电力,但是(如果你愿意的话,请叫我PETA宠物),我还是不想不必要地浪费精力。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-22 21:46:42

如果要对数据库中的数据进行排序,就不需要再对其进行排序。

票数 4
EN

Stack Overflow用户

发布于 2013-11-22 21:51:01

因为作为LINQ查询源的SQL查询是代码的一部分,而且由于您确信将对记录进行排序,所以也没有必要在LINQ中强制排序。如果有的话,添加一个调试断言来检查数据是否被正确排序,并在生产中关闭调试断言

其背后的理念是,您应该只有一段代码负责每一项功能。如果有人修改您的查询,以使项目不正常,很可能他不明白您在做什么。最好是通过断言立即指出这一点,而不是在代码的LINQ部分中用“腰带和吊带”来掩盖它。

不用说,像这样的决策需要有很好的文档记录:您需要添加一条注释,说明您的函数希望它的输入数据以一种特定的方式排序,而输入未排序的数据是一个错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20155034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档