实体框架 - 选择不同的

时间:2012-02-17 11:32:08

标签: c# entity-framework linq-to-entities

我有一个名为Tag的表,其中包含一个名为Label的列和一个名为AuctionId的列。我还有一个字符串数组,它们是搜索词。我想写一些Linq to Entities代码,它会给我一个不同的AuctionIds列表,其中Label匹配其中一个搜索词。这是伪代码:

return a list of unique AuctionIds where Label is in searchTerms

如何做到这一点?

2 个答案:

答案 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() - 正如它在尖齿上所说的那样

希望这有帮助