2013-08-12 44 views
5

Tôi muốn biết nếu có cách nào sử dụng LINQ để đối tượng để có danh sách lọc 2 danh sách khác. Tôi có hai danh sách đối tượng A và B, chúng có liên quan với nhau bằng một thuộc tính (Mã: Chuỗi). B có một thuộc tính khác, Name: String.Cách tạo danh sách từ lọc 2 danh sách với LINQ thành đối tượng

Tôi muốn nhận danh sách các đối tượng đáp ứng 2 điều kiện.

-Tất cả các đối tượng A phải khớp với thuộc tính A.Code của chúng cho bất kỳ thuộc tính B.Code nào trong danh sách B.

-B.Name phải là = "yoda";

Tôi đã thử với mã này (và một exampeles) nhưng nó có vẻ như làm việc và tôi không biết tại sao. Tôi mới bắt đầu với linQ.

List<A> FilteredAList = (from OneA in ListOfA 
         join OneB in ListOfB 
         on OneA.Code equals OneB.Code 
         where OneB.Name == "yoda" 
         select OneA).ToList<A>(); 

Cảm ơn bạn trước !.

+0

Nó hoạt động như thế nào? –

+0

Đã thử nghiệm nó ngay bây giờ và tôi nhận được 0 kết quả, mặc dù danh sách B có nhiều yodas và danh sách b có mã máy chủ khớp với mã A. –

+0

Bạn đang nói về mã của tôi được đăng trong câu trả lời của tôi? Nếu vậy, tôi chắc chắn rằng các phần tử trong 'ListOfB' có' .Name = "yoda" 'không có' Mã' khớp với bất kỳ phần tử nào trong 'ListOfA'. Cả hai điều kiện cần được xem xét. Bạn có thể đăng dữ liệu mẫu của 'ListOfB' và' ListOfA' để tôi có thể kiểm tra. –

Trả lời

5

Với yêu cầu của bạn, tôi nghĩ chúng ta nên sử dụng phương pháp Any, do đó chúng ta nên viết method query không expression query. Tất nhiên tôi không biết tương đương với Any trong expression query (ít nhất phải là ngắn như trong method query, nếu không, nó không tốt). Nếu có ai biết, xin vui lòng để lại một số bình luận. Cảm ơn vì điều đó.

var FilteredAList = ListOfA.Where(x=>ListOfB.Any(y=>x.Code==y.Code && y.Name=="yoda")) 
          .ToList<A>(); 
Các vấn đề liên quan