给定MyType {int Index,string Name}的集合,获取Min / Max索引项的技术有效方法是什么?
我们使用:
MyType minIndexItem = items.Single(t=>
t.Index == items.Min(t=>
t.Index));
看起来不太优雅。我们也希望坚持使用lambda语法,我们正在寻找技术上最有效的方法,而不是扩展方法等等。
感谢。
答案 0 :(得分:0)
可能是
(from item in items select item order by item.Index).First()
如果Index字段有db索引,那就快了。
答案 1 :(得分:0)
对它进行排序将是LINQ-to-RDBMS的简单方法,但可能不适用于LINQ-to-Objects,因为排序可能很昂贵并且在O(nlogn)中运行。
您可以使用LINQ聚合来获得最低或最高。这恰好贯穿整个集合一次,总是O(n)。例如,要获得最低项目:
items.Aggregate((current, next) => next.Index < current.Index ? next : current);