tôi đã tuyên bố như sau, mà luôn luôn trả về null:Tại sao Null là một phép chiếu LINQ không hợp lệ?
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? (List<string>)set.addins : null
);
tôi đã thay đổi nó một chút, và bây giờ nó hoạt động tốt:
var addins = allocations.SelectMany(
set => set.locations.Any(q => q.IsMatch(level, count))
? set.addins : new List<string>()
);
câu hỏi chính của tôi: Tại sao có thể không phải là null đóng vai trò như một kiểu trả về từ toán tử bậc ba trong ngữ cảnh LINQ này?
Câu hỏi phụ: Có cách nào thông minh hơn để xây dựng truy vấn trên (đặc biệt nếu nó loại bỏ "Danh sách mới()")?
Câu trả lời và thông tin chi tiết tuyệt vời Ngẫu nhiên, các diễn viên trên "set.addins" là không cần thiết trong các ví dụ khác của bạn, kể từ khi các nhà điều hành ternary không tham gia. –