Linq Выбрать все, кроме элементов из списка

Я какое-то время пытался сделать это. У меня есть этот список в asp.net, который я использую, который выглядит так:

<asp:ListBox ID="lstLinkedProspect" runat="server" SelectionMode="Multiple" />

Что я хочу с этим сделать, так это иметь возможность выбирать все элементы, которые у меня есть в определенной таблице, все, кроме того, который находится в списке. Не только выбранные, но и все элементы, которые уже есть в списке. Я использую библиотеку System.Linq.Dynamic. Вот что я пытаюсь сделать:

Dim lstProspect = dbConnection.Prospects.Where(If(String.IsNullOrWhiteSpace(SearchFilters.Value), "ProspectId > 0", SearchFilters.Value).ToString) _
                                                .Except(' There goes all the items in the list box)

То, что я уже пробовал, это:

Dim lstProspect = dbConnection.Prospects.Where(If(String.IsNullOrWhiteSpace(SearchFilters.Value), "ProspectId > 0", SearchFilters.Value).ToString) _
                                                .Except(lstLinkedProspect.Items.Cast(Of ListItem)().Where(Function(x) x.Value).Cast(Of Beans.Prospect))

Возможно ли в Linq получить все элементы из таблицы, которых нет в списке? Обратите внимание, что свойство Value элемента ListItem в списке — это ProspectId.

Заранее спасибо.


person Crushermike    schedule 21.09.2013    source источник
comment
Поддерживает ли динамический LINQ Except? Смогли бы вы жить с обычным решением LINQ? И что это за тип LINQ?   -  person Gert Arnold    schedule 22.09.2013
comment
Да, он поддерживает Except. Одним из преимуществ является то, что вы можете передать строку в предложении where, как я сделал в примере кода. Я могу жить с обычным решением Linq без каких-либо проблем.   -  person Crushermike    schedule 23.09.2013
comment
Взгляните на этот пост, он может помочь вам stackoverflow.com/questions/853526/   -  person CheGueVerra    schedule 04.11.2013


Ответы (1)


Это код, который я нашел для достижения того, что искал:

Dim lstItems = dbConnection.Prospects.Where(Function(x) ids.Contains(x.ProspectId))
Dim lstProspect = dbConnection.Prospects.Where(If(String.IsNullOrWhiteSpace(SearchFilters.Value),
"ProspectId > 0", SearchFilters.Value).ToString).Except(lstItems)

Надеюсь, это поможет любому, кто борется с этой проблемой.

person Crushermike    schedule 04.11.2013