2010-07-06 24 views
6

Tôi có một tập hợp các chuỗi. Tôi cần phải tìm ra từ chuỗi bộ sưu tập này đáp ứng một số điều kiện, ví dụ: chuỗi đó chứa A và B hoặc C. Các tiêu chí này được người dùng chỉ định để chúng hoạt động. Trong LINQ nó phải được cái gì đó như,Điều kiện chuỗi đánh giá động trong C#

List<String> items = new List<string> { "sdsdsd", "sdsd", "abc"}; 

var query = from item in items 
      where item.Contains("a") && item.Contains("b") || item.Contains("c")       
      select item; 

Tôi muốn làm cho nơi mà điều kiện năng động để nó có thể làm việc cho bất kỳ đầu vào bởi người sử dụng. Có thể làm điều này trong C# mà không cần sử dụng bất kỳ thư viện bên ngoài nào. Có thể sử dụng LINQ hoặc cái gì khác được xây dựng trong .Net framework.

Cảm ơn, Gary

+0

@Matt Ellen - đồng ý với bạn –

Trả lời

1

Nếu bạn muốn làm điều đó một mình, hãy bắt đầu ở đây: động vị từ: http://msdn.microsoft.com/en-us/library/bb513731.aspx Trees Biểu động: http://msdn.microsoft.com/en-us/library/bb882637.aspx

Tôi nghĩ rằng điều này nhiều hơn bạn mong muốn, và sẽ mạnh mẽ đề xuất sử dụng một số thư viện sẵn sàng và được kiểm tra, chuyển đổi từ chuỗi người dùng sang truy vấn thời gian chạy cho bạn.

5

Mặc dù bạn không muốn sử dụng thư viện bên ngoài nhưng có một thư viện thật tuyệt vời và đó là PredicateBuilder. builder vị cho phép bạn xây dựng một tập các vị từ để phù hợp với mục chống lại, ví dụ:

var predicate = PredicateBuilder.True<string>(); 
predicate = predicate 
    .And(p => p.Contains("a")) 
    .And(p => p.Contains("b")); 

var matches = items.Where(predicate); 
Các vấn đề liên quan