Có một tập hợp các loại thiết bị, một số trong số đó hỗ trợ (các) cài đặt cấu hình. Tôi đang cố gắng lấy danh sách tất cả các loại thiết bị và mọi cài đặt có thể áp dụng.LINQ External Outer Join - DefaultIfEmpty Error
Truy vấn này không chọn các thiết bị không có DeviceParameters. Nếu tôi thêm .DefaultIfEmpty() như được hiển thị bên dưới, tôi nhận được lỗi này:
"Giá trị tham chiếu đến loại giá trị 'Int64' không thành công do giá trị vật liệu là rỗng. Tham số chung của loại kết quả hoặc truy vấn phải sử dụng một loại nullable. "
Synatx chính xác cho DefaultIfEmpty là gì?
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
}
};
Bạn đã thử truyền cả hai TypeID vào int không thể thực hiện? "on (int?) d.TypeID bằng (int?) p.TypeID thành" ... –
Jacob: Cảm ơn bạn đã đề xuất, nhưng lỗi tương tự xảy ra ngay cả với dàn diễn viên. –
:). Giá trị một shot và cảm ơn cho việc cập nhật. Rất vui khi bạn nhận được câu trả lời đủ điều kiện. –