Вариант 2: object MyObject = null;
List<object> MyObjectList = DataContext.SomeTable.Where(....).Take(1).ToList();
if(MyObjectList.Any())
{
MyObject = MyObjectList.First();
}
Теперь проблемы нет, один запрос. Но как-то это возня с List напрягает. Почему нет например FirstOrNull? Можно конечно свой метод-расширение написать, но должен же быть удобный механизм?
UPD: набросал для себя метод-расширение. Скажите мне что я изобрел велосипед и как правильно сделать то что мне нужно? /// <summary>
/// Возвращает первый подходящий элемент или null
/// </summary>
/// <typeparam name="T">Тип элемента</typeparam>
/// <param name="source">Источник для поиска</param>
/// <param name="predicate">Функция для фильтрации элементов в источнике</param>
/// <returns>Первый подходящий элемент или null</returns>
public static T FirstOrNull<T>(this IEnumerable<T> source, Func<T, bool> predicate = null) where T : class
{
List<T> lst = null;
if (predicate != null)
lst = source.ToList();
else
lst = source.Where(predicate).Take(1).ToList();
if (lst.Any())
return lst.First();
else
return null;
}