Tôi có hai bảng, Table1
và Table2
. Tôi muốn thực hiện, chẳng hạn, một trái bên ngoài tham gia:Chọn tất cả các cột sau JOIN trong LINQ
var myOutput = from object1 in Table1
join object2 in Table2
on object1.Property1 equals object2.Property2 into Table3
from output in Table3.DefaultIfEmpty()
select new
{
object1.Property1,
object1.Property2,
//...
output.Property3,
output.Property4,
//...
};
Như bạn có thể nhận thấy, tôi muốn chọn tất cả các thuộc tính của cả hai đối tượng từ bảng kết quả (các enumerables coi khi tham gia bao gồm các đối tượng của một số loại - chúng khác nhau cho cả hai quan hệ). Tất nhiên, tôi có thể chọn các thuộc tính trong lựa chọn ẩn danh, như trong ví dụ.
Câu hỏi của tôi là cách tránh chỉ định tất cả các thuộc tính theo cách thủ công? Tôi muốn có một cái gì đó như SELECT * FROM TABLE3
, trong đó TABLE3
là một quan hệ kết quả (sau khi tham gia TABLE1
và TABLE2
).
Cảm ơn trước vì các đầu mối.
không phải tùy chọn đầu tiên sử dụng phương thức ToString() trong khi chuyển nhượng? Trong trường hợp đó tôi sẽ lấy ví dụ "Namespace.MyType" giá trị trong cột có tên Object1 sau khi làm myOutput.ToArray() ... – Jamie
Không, nó sẽ không gọi 'ToString()', điều gì mang lại cho bạn ý tưởng rằng nó sẽ ? Bạn có ràng buộc nó với một điều khiển giao diện người dùng của một số loại? * Điều khiển * có thể gọi 'ToString()', nhưng bản thân truy vấn nó xác thực, tt chỉ sử dụng toàn bộ đối tượng và ánh xạ nó tới một thuộc tính. –
nhận xét của bạn đã cho tôi ý tưởng - Tôi đã tạo một lớp mới chứa tham chiếu cho cả hai đối tượng. Sau đó, nó rất dễ dàng để ràng buộc với các thuộc tính nhất định trong số này :) – Jamie