Запрос LINQ для фильтрации по выбранным элементам в списке флажков

Не удалось найти это через Google или в вопросах SO...

У меня есть список флажков в моей форме. Я хочу отфильтровать свой список по списку выбранных идентификаторов из этого списка, которые проверены, в SQL я бы сделал это как «Где TypeId In (1, 4, 5, 7)»... как мне это сделать в LINQ?

Я чувствую, что мне не хватает действительно очевидного ответа, но я не могу его получить.

Ради аргумента... вот что у меня есть для примера данных:

In Colors (List<of currentColors>)
ID, Name, TypeId
1, Red, 1
2, Blue, 1
3, Green, 2
4, Pink, 3

Выбранные типы 2 и 3 в CheckboxList: filteredColors

filteredResults = (From C In WorkItemMonitor Where ????).ToList()

Ожидаемые элементы в filteredResults: [3, зеленый, 2], [4, розовый, 3]

РЕДАКТИРОВАТЬ: Мой текущий запрос.. (извините, мне сказали, что это будет список, оказывается, это таблица данных, которую я фильтрую)

Dim workItemsListing As DataTable
workItemsListing = (From L In WorkItemMonitor.AsEnumerable() _
Where clbStatus.CheckedItems.Contains(L.Item("CurrentStatusId"))).CopyToDataTable()

person RiddlerDev    schedule 30.06.2011    source источник


Ответы (1)


List<CurrentColor> colors = chkListCurrentColors.CheckedItems.Cast<CurrentColor> ();
filteredResults = (From C In WorkItemMonitor colors.Contains(C.TypeId)).ToList()

Это лучшее, что я могу сделать с вашим описанием. Если вам нужна дополнительная помощь, вам нужно будет показать, что вы добавляете в CheckedListBox и тип ваших цветов.

person agent-j    schedule 30.06.2011
comment
Откуда он знает, что я выбрал? - person RiddlerDev; 01.07.2011
comment
Дополнительная информация, извините, только что получил изменение, когда работал над этим... Я думаю, что это близко, но я получаю Источник не содержит DataRows, хотя оба объекта имеют элементы. Это потому, что мне нужно преобразовать коллекцию CheckedItems в таблицу данных? - person RiddlerDev; 01.07.2011
comment
Каков тип значения в clbStatus.CheckedItems? clbStatus.CheckedItems(0).GetType() Вам нужно привести его к этому типу. - person agent-j; 01.07.2011