2012-02-17 117 views
7

我有一個名爲標籤的表,名爲Label的列和名爲AuctionId的列。我也有一個搜索條件的字符串數組。我想寫一些Linq to Entities代碼,它會給我一個不同的AuctionIds列表,其中Label與其中一個搜索項匹配。這裏是這個僞代碼:實體框架 - 選擇截然不同

return a list of unique AuctionIds where Label is in searchTerms 

這怎麼辦?

回答

15

您可以使用列表上的Contains()。

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

使用爲清楚起見LAMBDA符號,這種分解爲若干功能順序如下:

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

沒有去太遠的lambda語法,這裏的主要特點是:

。凡(X => searchTerms.Contains(x.Label)) - 這將選擇出僅行其中searchTerms集合包含該行

。選擇(X => x.Au標籤值ctionId) - 返回了唯一的整數AutionId值,而不是完整的記錄

.Distinct() - 正如其說,在齒

希望這有助於