2015-06-16 5 views
1

У меня есть источник привязки, которая заполнена следующими даннымиФильтр источника привязки

TOM JACK 
JACK TOM 
TOM DEISE 
JACK JENNY 
TOM DALTON 
JERRY JOY 
JOY JERRY 

И у меня есть выпадающий, который также наполненную выше данных, например, если я выбираю JACK TOM то источник boind должен фильтровать результат, так что мне нужно, чтобы получить следующий результат

результат:

TOM JACK 
JACK TOM 

(только хотел показать имя, которое содержит как СЛОВО («TOM» и «J ACK 'только))

следующая моя попытка

bndSourceGrid.Filter = String.Format("{0} LIKE '%{1}%'", "Name", cboName.Text) 
bndSourceGrid.Sort = "Name ASC" 

ответ

1

Вы должны построить свой запрос выглядеть следующим образом:

Name LIKE '%tom%' AND Name LIKE '%jack%' .... 

Так что берите свой вклад, разделить его, проект его новая строка и присоединиться к ним все вместе с AND:

bndSourceGrid.Filter = 
    string.Join(" AND ", 
     cboName.Text 
     .Split(' ') 
     .Select(s => string.Format("Name LIKE '%{0}%'", s)) 
    ); 

Как отмечалось в Comme NTS, вам, возможно, придется возвращать результаты Select как массив:

bndSourceGrid.Filter = 
    string.Join(" AND ", 
     cboName.Text 
     .Split(' ') 
     .Select(s => string.Format("Name LIKE '%{0}%'", s)) 
     .ToArray() 
    ); 
+0

получаю эту ошибку 'Не удается привести объект типа 'WhereSelectArrayIterator2 [System.String, System.String] к типу«System.String [] '. ' – Olavakodan

+0

FYI, я преобразовал код в vb.net для работы в моей среде, то есть' bndSourceGrid.Filter = String.Join ("AND", cboName.Text.Split ("" C). [Выбрать] (Функция (s) String.Format («Name LIKE»% {0}% '", s)))' – Olavakodan

+0

Почему вы не пометили свой вопрос с помощью 'VB.Net' вместо' C#'? Я понятия не имею, как VB.Net использует Linq. Не знаете, почему вы получаете ошибку, возможно, вы можете добавить '.ToArray()' после 'Select'? – DavidG

Смежные вопросы