, , .
IEnumerable :
foreach(var item in source)
if(predicate(item))
return true;
return false;
, :
using(var en = source.GetEnumerator())
return en.MoveNext();
-
SELECT EXISTS(SELECT null FROM [some table] WHERE [some where clause])
. , , , , , WHERE, , , .
, Linq , , , .
, , FirstOrDefault, FirstOrDefault , (, ). !All(inversePredicate) Any(predicate) .
Single
. .NET Core, Single.
, linq-to Single SingleOrDefault, , . Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) :
public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
using(var en = source.GetEnumerator())
while(en.MoveNext())
{
var val = en.Current;
if(predicate(val))
{
while(en.MoveNext())
if(predicate(en.Current))
throw new InvalidOperationException("too many matching items");
return val;
}
}
throw new InvalidOperationException("no matching items");
}
- - :
public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
var result = default(TSource);
long tally = 0;
for(var item in source)
if(predicate(item))
{
result = item;
checked{++tally;}
}
switch(tally)
{
case 0:
throw new InvalidOperationException("no matching items");
case 1:
return result;
default:
throw new InvalidOperationException("too many matching items");
}
}
, Single , , Single , , ( ), - , - , , , , Single, , .
SingleOrDefault .
linq-to-objects, .Where(predicate).Single() Single(predicate) .