我有这样的事情:
public enum CoolEnum
{
Yes = 0,
No = 1,
Perhaps = 2,
Maybe = 3,
Perchance = 4,
}我想做以下几点:
CoolEnum? enum = await this.context
.MyTable
.Where(x => x.Id == id)
.Select(x => x.CoolEnum)
.DefaultIfEmpty((CoolEnum?)null)
.FirstAsync();但我明白错误
Processing of the LINQ expression 'DefaultIfEmpty<Nullable<CoolEnum>> (...) failed.
This may indicate either a bug or a limitation in EF Core. 正如我所见过的这里,这似乎是一个众所周知的低优先级问题。
然后我想我可以做以下几件事:
CoolEnum enum = await this.context
.MyTable
.Where(x => x.Id == id)
.Select(x => x.CoolEnum)
.FirstAsync();
CoolEnum? nullableEnum = enum == default ? null : enum;但是,这将将我现有的所有默认值更改为null,这不是我想要的。
我可以用哪种清洁的方法?我认为有以下几种选择:
他们两个都不干净。有什么更好的主意吗?
发布于 2020-03-24 13:58:55
您可以选择可空值(使用常规的C#强制转换为相应的可空类型),然后选择FirstOrDefault{Async}
.Select(x => (CoolEnum?)x.CoolEnum)
.FirstOrDefaultAsync();https://stackoverflow.com/questions/60832421
复制相似问题