我在网上搜索并且无法确定是否存在。我不知道这是一个好问题,但我还是会尝试。
在c#中检索列表中最大的内容的oneline算法是什么。
改变这样的事情:
int currentRow = 0;
foreach (CustomField cf in fieldList)
if (cf.Row > currentRow)
currentRow = cf.Row;
在这里,Row是Type int。 提前谢谢
答案 0 :(得分:6)
使用Linq(Enumerable.Max):
int currentRow = fieldList.Max(cf => cf.Row);
注意:源序列不应为空。如果序列可以为空,并且您希望将某个默认值设置为max(即样本中的0
),则项目序列并使用Enumerable.DefaultIfEmpty:
int currentRow = fieldList.Select(cf => cf.Row).DefaultIfEmpty(0).Max();
答案 1 :(得分:0)
此外,如果您希望元素具有某个属性的最大值(例如,总销售额最大的销售人员),而不仅仅是最大值本身,
public static TEntity MaxBy<TEntity, TKey>(
this IEnumerable<TEntity> source,
Func<TEntity, TKey> selector) where TEntity : class
{
if (source == null || !source.Any())
return default(TEntity);
return source.OrderByDescending(selector)
.FirstOrDefault();
}
用法如下:
List<Salesperson> allSalespeeps = GetSalespeople();
Salesperson winner = allSalespeeps.MaxBy(s => s.TotalSales);