Если вам нужен элемент с наименьшим идентификатором, вам не нужен OrderBy ... Намного быстрее просто перечислить список один раз, поскольку эта операция имеет сложность O(n)
, тогда как типичная сортировка имеет O(n log n)
сложность.Вы можете сделать это с помощью цикла foreach
или использовать такой метод расширения, как этот:
public static T WithMin<T, TValue>(this IEnumerable<T> source, Func<T, TValue> selector)
{
var min = default(TValue);
var withMin = default(T);
bool first = true;
foreach (var item in source)
{
var value = selector(item);
int compare = Comparer<TValue>.Default.Compare(value, min);
if (compare < 0 || first)
{
min = value;
withMin = item;
}
first = false;
}
return withMin;
}
Используйте его следующим образом:
var objectWithMinId = myObjectList.WithMin(o => o.Id);