Tôi đang gặp một chút rắc rối khi quyết định cách tốt nhất để cấu trúc lại phương thức chứa truy vấn LINQ rất giống nhưng không giống nhau.Phương pháp tái cấu trúc chứa truy vấn LINQ
Hãy xem xét một phương pháp đó là một cái gì đó dọc theo những dòng:
public SomeObject GetTheObject(IMyObject genericObject) {
Type t = genericObject.GetType();
SomeObject so = null;
switch(t.Name) {
case "Type1":
var object1 = (from o in object1s where o.object1id == genericObject.id).FirstOrDefault();
so = (SomeObject)object1;
break;
case "Type2":
var object2 = (from o in object2s where o.object2id == genericObject.id).FirstOrDefault();
so = (SomeObject)object2;
break;
default:
break;
}
return so;
}
Đây chỉ là một minh hoạ, nhưng hãy tưởng tượng tôi cần phải thực hiện một truy vấn khác nhau (khác nhau ở chỗ nó sử dụng một ObjectSet khác nhau, sử dụng hơi các trường khác nhau (object1id vs object2id) và trả về một kiểu khác nhau Ngoài ra, các truy vấn là giống nhau
Có cách nào hợp lý để cấu trúc lại kiểu phương pháp này không? Có lẽ tôi phải sử dụng phương pháp chính xác và tôi không thể tránh viết lại truy vấn, nó chỉ cần ems như tôi NÊN có thể bằng cách nào đó!
Bất kỳ con trỏ đánh giá rất
Tôi đã thử nó với Reflection, nhưng anh ta lại quá khứ tuyên bố LINQ ("từ o trong object1s nơi o.object1id"). Bạn nên xem xét tạo động một câu lệnh LINQ. – Graham
Hi Graham, điều này chắc chắn sẽ là một lựa chọn ngoại trừ một thực tế là tôi đang cố gắng giữ DAL đóng gói trong một kho lưu trữ mà lá tôi bị hạn chế trong các phương pháp tôi có thể sử dụng để tự động xây dựng một truy vấn. Tôi đã cố gắng xây dựng một nhà máy để trả lại bản sao Repository cụ thể mà tôi muốn. Nhưng điều này đã để lại cho tôi một tình huống tương tự như tôi đã mô tả cho Paolo, cụ thể là bởi vì Repository của tôi yêu cầu một kiểu EntityObject cụ thể, nên tôi không thể tạo một kiểu dựa trên một giao diện. –
dougajmcdonald