是否可以更改EF Core中的SingleOrDefault方法返回的内容?
或者默认值始终为空吗?
是否可以更改EF Core中的SingleOrDefault方法返回的内容?
没有在这种情况下,“默认”的意思是“除非可空值类型外,为空,然后为默认值”。该术语是从C#中的default operator借用的。
当然,您可以提供自己的扩展方法,该方法可以执行您想要的任何操作。 EG:
static class MyDefaultExtension
{
public static T SingleOrDefault<T>(this IEnumerable<T> col, Func<T> defaultFactory)
{
using (var e = col.GetEnumerator())
{
if (e.MoveNext())
{
var rv = e.Current;
if (e.MoveNext())
{
throw new InvalidOperationException("Sequence contains more than one element");
}
return rv;
}
}
if (typeof(T) == typeof(Category))
{
return defaultFactory();
}
else
{
return default(T);
}
}
}