2011-01-08 36 views
7

Hiện tại tôi đang sử dụng ví dụ truy vấn LINQKit/Ms động để xây dựng LINQ Biểu thức động từ chuỗi. Điều này hoạt động tốt.Xây dựng các truy vấn LINQ từ chuỗi trong C# 4.0 - thực hành tốt nhất

  1. LinqKit: http://www.albahari.com/nutshell/linqkit.aspx
  2. Microsoft động LINQ truy vấn: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

Ngay bây giờ, tôi đang chuyển ứng dụng của tôi từ C# 3.5 đến C# 4.0. Tôi tự hỏi nếu có một cách khác (cách tiêu chuẩn của khung công tác) để xây dựng các truy vấn từ các chuỗi.

Tôi đã kiểm tra tài liệu nhưng chưa tìm thấy gì. Ngoài ra đây không phải là một vấn đề, vì tôi có giải pháp trên.

Chỉ tôi muốn sử dụng các tính năng "chuẩn" nếu có. Thực hành tốt nhất là gì?

+0

Đây là cuộc thảo luận liên quan: http://stackoverflow.com/questions/3782538/parsing-a-string-c-linq-expression. Tôi nghĩ rằng nó đã được cập nhật cho .NET 4, vì vậy vẫn không có gì được xây dựng trong khung công tác - ngoại trừ nếu bạn đang nói về LINQ to Entities, thì EF có khả năng xây dựng truy vấn động (mặc dù không phải là mới trong .NET 4. như tôi biết): http://msdn.microsoft.com/en-us/library/bb338811.aspx – Slauma

+0

Cho đến nay, tôi đã nhận được mã cũ của mình. Điều chỉnh nhỏ là bắt buộc. Ví dụ: cuộc gọi phương thức không còn chấp nhận null nữa, nhưng bạn cần gọi phương thức đã quá tải. Về cơ bản những thứ đơn giản sau khi bạn biết. Tuy nhiên, tốt để biết tôi rõ ràng đã không bỏ lỡ bất cứ điều gì. –

Trả lời

2

Tôi hiện đang làm một cái gì đó như thế này và tôi rất hài lòng với kết quả. Cách tôi đã làm với Entity Framework và phương thức ObjectQuery.Select (truy vấn chuỗi, ObjectParameters [] params). Thông tin thêm tại đây: http://msdn.microsoft.com/en-us/library/bb298787.aspx#Y586. Bạn sẽ không thể hiện biểu thức từ chuỗi nhưng sử dụng SQL cho các đối tượng thực hiện công việc rất tốt và được thực hiện chính xác cho mục đích đó như tự động tạo Biểu thức không phải là tầm thường và thực sự chậm hơn.

Chúc mừng

+0

Tốt rồi, đã cho tôi một thời gian để kiểm tra chéo nó. Tuy nhiên, nó rõ ràng là một cách tiếp cận khác nhau từ "MSDynamicLinq2010" (từ các ví dụ VS2008) và "LinqKit" và do đó một cái gì đó mới (ít nhất là cho tôi). Tôi sẽ ghi nhớ điều này cho các giải pháp tiếp theo của mình. –

+0

Tôi đoán có nhiều cách để làm một con mèo. Tôi nhớ trong một TechEd MS nói rằng họ đã tạo ra Entity SQL với mục đích rõ ràng là có một sự thay thế dễ dàng hơn để tạo ra các biểu thức động. Nó vẫn còn trừu tượng DB và nhanh hơn một chút so với sử dụng các biểu thức để cho công cụ năng động, tôi khó có thể nghĩ ra một nhược điểm. Làm việc siêu cho tôi. –

Các vấn đề liên quan