Filter IEnumerable<T> against IEnumerable<string>
222 просмотра
4 ответа
I have an object Style
with a property StockNumber
. I would like to filter a list of all Db.Styles
against an IEnumerable<string> stockNumbers
the user enters in a search. DB.Styles
is an IEnumerable<Style>
. Here is essentially what I am trying to do:
public IEnumerable<Style> LoadListOfStyles(IEnumerable<string> stockNumbers)
{
return Db.Styles.Intersect(stockNumbers);
// Need to filter Db.Styles based on stockNumbers
}
So is there an easy way to compare the list of all styles in Db.Styles
against my search values in stockNumbers
to return a filtered list of only the Styles
the user has searched for? The only way I have seen to be able to do this is to have 2 IEnumerable objects to intersect, but loading the styles one by one from the stock numbers searched seems like a lot of unnecessary code. I am wondering if there is an easier way. Or do I need to roll my own method to filter the results?
Ответы (4)
1 плюс
return db.Styles.Where(style => stockNumbers.Any(sn => sn == style.StockNumber));
Автор: Yuliam Chandra
Размещён: 16.07.2014 02:25
1 плюс
public IEnumerable<Style> LoadListOfStyles(List<string> stockNumbers)
{
return db.Styles.Where(s => stockNumbers.Contains(s.StockNumber));
}
Автор: Sam I am says Reinstate Monica
Размещён: 16.07.2014 02:24
1 плюс
Consider a Where
clause.
public IEnumerable<Style> LoadListOfStyles(IEnumerable<string> stockNumbers)
{
return Db.Styles.Where(style => !stockNumbers.Contains(style.StockNumber));
}
Автор: Bas
Размещён: 16.07.2014 02:24
1 плюс
You can think of Intersect
as effectively a Join
where the keys of each object are always "themselves". Here you want to perform a join where the key isn't always "itself", so you use a Join
(or, if you need to remove duplicates, a GroupJoin
).
var query = from style in Db.Styles
join number in stockNumbers
on style.StockNumber equals number
into numbers
where numbers.Any()
select style;
Автор: Servy
Размещён: 16.07.2014 02:26
Вопросы из категории :
- c# Преобразовать десятичную в двойную?
- c# Как рассчитать чей-то возраст в C #?
- c# Как вы сортируете словарь по значению?
- c# В чем разница между int и Integer в Java и C #?
- c# Как создать новый экземпляр объекта из Типа
- linq LINQ-запрос к DataTable
- linq Условные запросы Linq
- linq Конфликт данных в LINQ
- linq Есть ли способ переопределить пустой конструктор в классе, сгенерированном LINQtoSQL?
- linq Отладка LINQ to SQL SubmitChanges ()
- entity-framework Entity Framework против LINQ to SQL
- entity-framework Можете ли вы использовать Microsoft Entity Framework с Oracle?
- entity-framework Несколько бэкэндов для Entity Framework
- entity-framework Как вы выполняете оператор «IN» в стиле SQL в LINQ to Entities (Entity Framework), если Contains не поддерживается?
- entity-framework Конец ассоциации не отображается в структуре объекта ADO
- lambda Что такое лямбда (функция)?
- lambda Что предпочтительнее использовать в Python: лямбда-функции или вложенные функции ('def')?
- lambda C # Лямбда-выражения: зачем их использовать?
- lambda В чем разница между «закрытием» и «лямбдой»?
- lambda Завершение хронометража секундомера с делегатом или лямбдой?