我有一个名为Tag的表,其中包含一个名为Label的列和一个名为AuctionId的列。我还有一个字符串数组,它们是搜索词。我想写一些Linq to Entities代码,它会给我一个不同的AuctionIds列表,其中Label匹配其中一个搜索词。这是伪代码:
return a list of unique AuctionIds where Label is in searchTerms
如何做到这一点?
答案 0 :(得分:15)
您可以在列表中使用Contains()。
List<String> AuctionIDs = (from tagItem in Tags
where searchItems.Contains(tagItem.Label)
select tagItem.AutionID).Distinct().ToList();
答案 1 :(得分:5)
为了清晰起见,使用Lambda表示法,按顺序分解为许多函数,如下所示:
IEnumerable<Int32> DistinctIds = TagTable.Where(x => searchTerms.Contains(x.Label)).Select( x => x.AuctionId).Distinct()
对Lambda语法没有太深入的了解,这里的主要功能是:
.Where(x =&gt; searchTerms.Contains(x.Label)) - 这将只选择searchTerms集合包含该行的Label值的行
.Select(x =&gt; x.AuctionId) - 只返回整数AutionId值而不是完整记录
.Distinct() - 正如它在尖齿上所说的那样
希望这有帮助