값 유형이 아닌 일반적인 경우 :
static class ExtensionsThatWillAppearOnEverything
{
public static T IfDefaultGiveMe<T>(this T value, T alternate)
{
if (value.Equals(default(T))) return alternate;
return value;
}
}
var result = query.FirstOrDefault().IfDefaultGiveMe(otherDefaultValue);
다시 말하지만, 시퀀스 에 어떤 것이 있는지 또는 첫 번째 값이 기본값 인지 알 수 없습니다 .
당신이 이것에 관심이 있다면, 당신은 같은 것을 할 수 있습니다
static class ExtensionsThatWillAppearOnIEnumerables
{
public static T FirstOr<T>(this IEnumerable<T> source, T alternate)
{
foreach(T t in source)
return t;
return alternate;
}
}
로 사용
var result = query.FirstOr(otherDefaultValue);
Steak 씨가 지적했듯이 이것은 이것에 의해서도 가능 .DefaultIfEmpty(...).First()
합니다.
YourCollection.FirstOrDefault()
사용할 수 있습니다YourCollection.DefaultIfEmpty(YourDefault).First()
.