Код: Выделить всё
public static HasValueResult HasValue(this TEntity? obj) where TEntity : struct
{
bool hasValue = false;
TEntity value = default;
HasValueResult result = default;
if(obj is IEnumerable enumerable)
{
hasValue = enumerable.Any();
value = (TEntity)obj;
result = new HasValueResult(hasValue, value);
}
else if(obj is Enum)
{
hasValue = true;
value = (TEntity)obj;
result = new HasValueResult(hasValue, value);
}
else if(obj is IAsyncEnumerable coll)
{
ICollection items = [];
ValueTask t = ((IAsyncEnumerable)obj).AnyAsync();
hasValue = t.Result;
IAsyncEnumerator en = ((IAsyncEnumerable)obj).GetAsyncEnumerator();
while(en.MoveNextAsync().Result)
{
items.Add(en.Current);
}
result = new HasValueResult(hasValue, null, items);
}
else
{
hasValue = obj is Guid g ? g.Equals(Guid.Empty) : !string.IsNullOrEmpty(obj.ToString());
}
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-none-nul