var result = l.SingleOrDefault();
1. Вот еще вариант для дальнейшей обработки: использовать что то типа Option из F# (или Nullable в C#)
Так, что б был сразу понятен контракт метода
public class SingleResult<T> where T : class {
private readonly T result;
public readonly bool IsSuccess;
private SingleResult(T result, bool isSuccess) {
this.result = result;
IsSuccess = isSuccess;
}
public T Result {
get {
Contract.Requires<InvalidOperationException>(IsSuccess);
return result;
}
}
public static SingleResult<T> Success(T result) {
Contract.Requires<ArgumentNullException>(result != null, "result");
return new SingleResult<T>(result, true);
}
public static SingleResult<T> Nothing = new SingleResult<T>(null, false);
}
public SingleResult<SomeRecord> FindMe(string prop) {
var l = <linqquery >;
var result = l.SingleOrDefault();
if (result == null)
return SingleResult<SomeRecord>.Nothing;
return SingleResult<SomeRecord>.Success(result);
}
2. Можно по типу TryParse
public bool TryFindSingle(string prop, out SomeRecord result) {...}