2012-02-17 13 views
7

Tôi có một bảng có tên là Thẻ có cột được gọi là Nhãn và một cột có tên là AuctionId. Tôi cũng có một chuỗi các chuỗi là cụm từ tìm kiếm. Tôi muốn viết một số mã LINQ to Entities mà sẽ cung cấp cho tôi một danh sách riêng biệt của AuctionIds trong đó Nhãn khớp với một trong các cụm từ tìm kiếm. Đây là mã giả cho việc này:Khuôn khổ thực thể - Chọn riêng trong

return a list of unique AuctionIds where Label is in searchTerms 

Làm cách nào để thực hiện điều này?

Trả lời

15

Bạn có thể sử dụng Chứa() trong danh sách.

List<String> AuctionIDs = (from tagItem in Tags 
          where searchItems.Contains(tagItem.Label) 
          select tagItem.AutionID).Distinct().ToList(); 
5

Sử dụng ký hiệu Lambda cho rõ ràng, điều này phá vỡ một số chức năng trong chuỗi như sau:

IEnumerable<Int32> DistinctIds = TagTable.Where(x => searchTerms.Contains(x.Label)).Select(x => x.AuctionId).Distinct() 

Mà không đi quá xa vào cú pháp Lambda, các tính năng quan trọng ở đây là:

.Where (x => searchTerms.Contains (x.Label)) - điều này sẽ chọn ra chỉ hàng nơi thu searchTerms chứa giá trị Label cho rằng hàng

.Chọn (x => x.Au ctionId) - trở ra chỉ số nguyên giá trị AutionId chứ không phải là toàn bộ kỷ lục

.Distinct() - không chỉ là những gì nó nói trên tine

Hope this helps