Entity Framework-выберите distinct в

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

return a list of unique AuctionIds where Label is in searchTerms

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

2 ответов


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

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

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

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

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

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

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

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

надеюсь, что это помогает