Entity Framework - Выберите отличительный в - PullRequest
7 голосов
/ 17 февраля 2012

У меня есть таблица Tag с столбцом Label и AuctionId.У меня также есть массив строк, которые являются поисковыми терминами.Я хочу написать некоторый код Linq to Entities, который даст мне отдельный список AuctionIds, где метка соответствует одному из условий поиска.Вот псевдокод для этого:

return a list of unique AuctionIds where Label is in searchTerms

Как это можно сделать?

Ответы [ 2 ]

15 голосов
/ 17 февраля 2012

Вы можете использовать Contains () в списке.

List<String> AuctionIDs = (from tagItem in Tags
                           where searchItems.Contains(tagItem.Label)
                           select tagItem.AutionID).Distinct().ToList();
5 голосов
/ 17 февраля 2012

Используя лямбда-нотацию для ясности, это разбивается на ряд функций в следующей последовательности:

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

Не вдаваясь слишком далеко в лямбда-синтаксис, ключевые функции здесь:

.Where (x => searchTerms.Contains (x.Label)) - это выберет только те строки, где коллекция searchTerms содержит значение Label для этой строки

.Select (x => x.AuctionId) - возвращает только целочисленные значения AutionId, а не полную запись

.Distinct () - выполняет только то, что говорит на зубце

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...