gpt4 book ai didi

c# - Linq 左外连接 - DefaultIfEmpty 错误

转载 作者:太空狗 更新时间:2023-10-29 21:41:52 25 4
gpt4 key购买 nike

有一组设备类型,其中一些支持配置设置。我正在尝试获取所有设备类型和任何适用设置的列表。

此查询不会选取没有 DeviceParameters 的设备。如果我添加 .DefaultIfEmpty() 如下所示,我会收到此错误:

“转换为值类型‘Int64’失败,因为具体化值为 null。结果类型的泛型参数或查询必须使用可空类型。”

DefaultIfEmpty 的正确语法是什么?

            var Devices = from d in dc.DeviceTypes
join p in dc.DeviceParameters on d.TypeID equals p.TypeID into tmpTable
from items in tmpTable.DefaultIfEmpty()
group items by d.DeviceName into g
select new
{
DeviceName = g.Key,
settings = from s in g
select new
{
ParamName = s.ParamName,
Param1 = s.Param1,
Param2 = s.Param2,
Param3 = s.Param3
}
};

最佳答案

如果您已经定义了外键关系,我认为解决方案非常简单,除非我遗漏了什么:

var Devices = dc.DeviceTypes
.Select(p=>new
{
DeviceName = p.DeviceName ,
settings = p.DeviceParameters
.Select(q=>new
{
ParamName = p.ParamName,
Param1 = q.Param1,
Param2 = q.Param2,
Param3 = q.Param3
})
});

无论如何,我可能会以这种方式进行设置:

settings = p.DeviceParameters.ToList()

关于c# - Linq 左外连接 - DefaultIfEmpty 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674094/

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