2012-02-17 110 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() - 正如其说,在齿

希望这有助于