gpt4 book ai didi

.net - 在 EF5 的 select select 子句中选择 null

转载 作者:行者123 更新时间:2023-12-01 06:33:30 24 4
gpt4 key购买 nike

我正在尝试将我需要的数据选择为简单的匿名类型,以序列化 Json 请求的数据。

using (var dbContext = new DataContext())
{
var vals = dbContext.Primaries.Select(p => new
{
Name = p.Name,
Secondary = p.SecondaryId.HasValue ? new { Name = p.Secondary.Name } : null
});
}

但是当我在 vals 上调用枚举器时,我得到以下异常
Unable to create a null constant value of type 'Anonymous type'. Only entity types, enumeration types or primitive types are supported in this context.

我真的真的需要 Secondary如果外键为空,则为空。如何直接从 select 语句中让匿名为空。

我的想法解决方案是能够直接序列化结果数据,而无需处理中间数据集。

最佳答案

您可以通过始终返回匿名对象来解决此问题,其中匿名对象可能具有空属性。

using (var dbContext = new DataContext())
{
var vals = dbContext.Primaries.Select(p => new
{
Name = p.Name,
Secondary = new { Name = p.SecondaryId.HasValue ? p.Secondary.Name : null }
});
}

如果你真的想制作 Secondary null 如果 p.SecondaryId为空,您可以添加以下内容。
//ToList allows you to work with LINQ to Objects rather than Linq to Entities.  
//However, you'll generally want to call ToList() last for performance reasons.
var valsCleaned = vals.ToList()
.Select(v => {
if(v.Secondary.Name == null)
{
v.Secondary == null;
}
return v;
});

关于.net - 在 EF5 的 select select 子句中选择 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800244/

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