如果用于填充泛型列表的SQL查询命令的结果集如下(List<InventoryItem> inventoryItems是填充的):
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()是多余的(在我看来是这样,但我想验证),如下所示:
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宠物),我还是不想不必要地浪费精力。
发布于 2013-11-22 21:46:42
如果要对数据库中的数据进行排序,就不需要再对其进行排序。
发布于 2013-11-22 21:51:01
因为作为LINQ查询源的SQL查询是代码的一部分,而且由于您确信将对记录进行排序,所以也没有必要在LINQ中强制排序。如果有的话,添加一个调试断言来检查数据是否被正确排序,并在生产中关闭调试断言。
其背后的理念是,您应该只有一段代码负责每一项功能。如果有人修改您的查询,以使项目不正常,很可能他不明白您在做什么。最好是通过断言立即指出这一点,而不是在代码的LINQ部分中用“腰带和吊带”来掩盖它。
不用说,像这样的决策需要有很好的文档记录:您需要添加一条注释,说明您的函数希望它的输入数据以一种特定的方式排序,而输入未排序的数据是一个错误。
https://stackoverflow.com/questions/20155034
复制相似问题