【发布时间】:2013-11-21 16:00:30
【问题描述】:
我正在查看一些 LINQ 示例,因此被提醒他们应该在末尾有一个“select”子句。
但我有一个正在工作的 LINQ,并且没有“选择”:
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)
.ToList();
}
这是因为:
(a) select is not really necessary?
(b) Take() is doing the "select"
(c) ToList() is doing the "select"
说实话,这在我添加“ToList()”之前就已经工作了......所以看起来 LINQ 在允许人们逃避的方面是相当宽松/松懈的。
另外,在我使用的 LINQ 中,我认为 OrderBy 和 ThenBy 是多余的,因为用于填充 inventoryItems 的 SQL 查询已经有一个 ORDER BY ID、PackSize 子句。我说得对吗(.OrderBy() 和 .ThenBy() 是不必要的)?
【问题讨论】:
-
旁注:在 VB.NET 中,
Select始终是可选的,如果有疑问,会自动创建具有多个属性的IEnumerable(Of anonymous type)。
标签: linq select ienumerable