Tôi có một số truy vấn LINQ có dự phòng tôi muốn đưa ra một phần mã duy nhất. Đây là những tham gia experssions được IQueryable, và quan trọng của nó tôi không gây ra các truy vấn được đánh giá sớm hơn nó sẽ không có refactoring.refactoring LINQ Biểu thức IQueryable để loại bỏ các phần trùng lặp của các truy vấn
Đây là một câu hỏi đơn giản:
var result =
from T in db.Transactions
join O in db.Orders on T.OrderID equals O.OrderID
join OD in db.OrderDetails on O.OrderID equals OD.OrderID into OrderDetails
let FirstProductBought = OrderDetails.First().Select(OD => OD.Product.ProductName)
select new
{
TransactionID = T.TransactionID,
OrderID = O.OrderID,
FirstProductBought = FirstProductBought
};
Những gì tôi muốn đến yếu tố ra logic thứ là "đưa ra một trật tự, những gì là sản phẩm đầu tiên mua". Tôi đang sử dụng cùng một logic trong các truy vấn khác. Làm thế nào tôi có thể đưa nó vào một phương pháp chia sẻ?
Nói chung, để sử dụng lại mã và IQueryables, những gì tôi có thể làm là mã đưa IQueryable vào và tạo một IQueryable/IOrderedQueryable làm đầu ra. Với các hàm như vậy, tôi có thể xây dựng các biểu thức LINQ với mã có thể tái sử dụng mà vẫn trì hoãn truy vấn cho đến khi truy vấn được xây dựng đầy đủ. Ở đây, kể từ khi tôi chỉ có một int (orderID) Tôi không chắc chắn làm thế nào để làm cho nó hoạt động.
cảm ơn
Đây là câu hỏi cấp cao tuyệt vời cho Linq'ers. Tôi hỏi cùng một điều cơ bản và không nhận được nhiều phản hồi. – Merritt