2011-06-30 31 views
1

找不到這個通過Google或在SO問題...LINQ查詢按過濾方式選中項目在複選框列表

我有一個複選框列表框在我的表單。我想從列表框中篩選出我所選擇的列表中的列表,這些列表被選中,在SQL中,我會這樣做:「Where 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,Green,2],[4,Pink,3]

編輯: 我的當前查詢..(對不起被告知這將是一個列表,原來是一個DataTable我過濾)

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

回答

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

這是對我可以用你的描述做到最好。如果你需要更多的幫助,你需要顯示你添加到CheckedListBox和你的顏色的類型。

+0

這是如何知道我選擇了什麼? – RiddlerDev

+0

更多信息,抱歉,剛剛得到了更改,因爲我正在處理這個問題...我認爲它很接近,但我得到的「源代碼不包含DataRows」,儘管兩個對象都包含項目。這是因爲我需要將CheckedItems集合轉換爲數據表? – RiddlerDev

+1

clbStatus.CheckedItems中的值的類型是什麼? 'clbStatus.CheckedItems(0).GetType()'你需要將它轉換爲該類型。 –

相關問題