Tôi có một LINQ to Entities truy vấn có dạng sau:Truy vấn lồng nhau không được hỗ trợ. Operation1 = 'UnionAll' Operation2 = 'MultiStreamNest'
var x = from a in SomeData
where ... some conditions ...
select new MyType
{
Property = a.Property,
ChildCollection = from b in a.Children
select new MyChildType
{
SomeProperty = b.Property,
AnotherProperty = b.AnotherProperty
}
};
var y = from a in SomeData
where ... some other conditions ...
select new MyType
{
Property = a.Property,
ChildCollection = from b in a.Children
select new MyChildType
{
SomeProperty = b.Property,
AnotherProperty = b.AnotherProperty
}
};
var results = x.Concat(y);
(Đây là một ví dụ đơn giản - những 'nơi' và 'chọn' điều khoản phức tạp hơn được hiển thị ở đây. Tôi đang sử dụng các câu lệnh truy vấn riêng biệt như tạo một kết hợp đơn lẻ quá phức tạp, có quá nhiều điều kiện và cần có tuổi để biên dịch)
Biên dịch tốt, nhưng không thực hiện được ngoại lệ:
"The nested query is not supported. Operation1='UnionAll' Operation2='MultiStreamNest'
Lưu ý, tôi đang cố gắng chiếu vào một cấu trúc được sắp xếp lồng nhau. Nếu tôi gọi .ToList() trên x và y trước khi Concat() nó hoạt động tốt. Như một điểm nữa, một trong những thuộc tính của tôi là một enum, nhưng tôi gán cho nó bằng cách sử dụng một thuộc tính wrapper số nguyên.
Có cách nào tôi có thể làm những gì tôi muốn làm mà không phải kéo tất cả dữ liệu vào bộ nhớ? Hay là enum gây ra sự thất bại?
Cảm ơn,
T
Chỉ cần thử thứ hai trong số này và có vẻ hành xử giống hệt như trước, nghĩa là không hoạt động như tôi mong đợi (xem nhận xét của tôi về bài đăng của @ Arion –
... hiện đã bị xóa. t tâm sử dụng Union là tập hợp kết quả nên được phân biệt, nhưng sau đó tôi nhận được ngoại lệ "The 'Distinct' hoạt động không thể được áp dụng cho bộ sưu tập ResultType của đối số đã chỉ định" mà tôi tin là vì Distinct không thể xử lý lồng nhau –
Nếu trống? Làm thế nào là nó hành vi? – innovia