gpt4 book ai didi

linq - Entity Framework 6 - 如果查询不包含任何行,则检索 null 而不是默认值

转载 作者:行者123 更新时间:2023-12-04 02:24:07 26 4
gpt4 key购买 nike

实体 Foo:

public int Foo { get;放; }

EF 查询:

int? barX = FOOs.GetQuery().Where(f => f.x == x).Select(f => f.bar).SingleOrDefault();

如果没有 f.x == x 的行,则返回整数的默认值 0,但我想返回 null

如何实现?

无论结果为空还是列值真的为 0,0 都不是明确的指标!

最佳答案

您可以在以下之后拉回完整的实体和项目,而不是在查询中进行投影:

var foo = FOOs.GetQuery().Where(f => f.x == x).SingleOrDefault();
int? barX = foo != null ? (int?)foo.bar : null;

如果你担心获取整个实体那么你可以返回一个匿名类型而不是完整的东西:

var foo = FOOs.GetQuery().Where(f => f.x == x).Select(new { bar = f.bar }).SingleOrDefault();
int? barX = foo != null ? (int?)foo.bar : null;

感谢@Flater,因为我不知道这是可能的(只是将其转换到投影中):

int? barX = FOOs.GetQuery().Where(f => f.x == x).Select(f => (int?)f.bar).SingleOrDefault();

关于linq - Entity Framework 6 - 如果查询不包含任何行,则检索 null 而不是默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24366763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com