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 () - делает только то, что он говорит на зубце
надеюсь, что это помогает