ОК. У меня есть базовый запрос, который возвращает список (на самом деле ObjectQuery, но я не думаю, что это имеет значение)
У меня около 5 подтипов, основанных на основном типе, и мне нужно отфильтровать их.Все работает нормально, пока я не хочу, чтобы результаты были основного типа (не подкласса)
В основном у меня есть запрос, который включает все, затем я отфильтровываю типы, которые не отмечены в списке флажков.(asp.net)
Допустим, у меня есть объект с именем Task, а SubTask1 и SubTask2, которые наследуются от Task
Dim AllTasks As Objects.ObjectQuery(Of Demo.Task) = dbContext.CompletedTasks(ctx, anyID) 'calling a compiled query but it doesnt matter.
'It could be Dim AllTasks = from t in ctx.Tasks select t
For Each itm As ListItem In chkTaskTypeList.Items
If Not itm.Selected Then
Select Case itm.Value
Case "SubTask1"
'this works as expected, and eliminates tasks that are of the subtype Subtask1
AllTasks = From ti In AllTasks Where Not TypeOf ti Is SubTask1
Case "SubTask2"
'This also works as I want by filtering out the various sub types
AllTasks = From ti In AllTasks Where Not TypeOf ti Is SubTask2 AndAlso Not TypeOf ti Is SubTaskWhatever
Case "SubTask"
**'This works as expected, but not like I need. It removes all the types when what I really want is to remove**
**'The results that are of the base type but NOT the ones that are of a subtype**
AllTasks = From ti In AllTasks Where Not TypeOf ti Is SubTask
End Select
End If
Next
lvwHistory.DataSource = AllTasks
Если бы у меня было ограниченное количество подтипов, я, вероятно, мог бы что-то сказатькак (не TypeOf ti Is SubTask и также TypeOf ti Is SubTask1) andalso ... но я надеюсь на лучший способ (и тот, который не ломает страницу, если добавлен новый подтип)