в другой теме, я наткнулся на это очень элегантное решение Дарина Димитрова, чтобы отфильтровать источник данных одного ComboBox с выбором другого ComboBox: как отфильтровать комбинированный список в выпадающем списке, используя c #
combo2.DataSource = ((IEnumerable<string>)c.DataSource)
.Where(x => x == (string)combo1.SelectedValue);
Я хотел бы сделать то же самое, но для фильтрации по второму списку я бы хотел фильтровать по тексту TextBox.(По сути, вместо того, чтобы выбирать из второго ComboBox, пользователь просто вводит свой фильтр в TextBox).Однако оказалось, что это не так просто, как я надеялся.Я попытался выполнить следующее, но с треском провалился:
cbWohndresse.DataSource = ((IEnumerable<DataSet>)ds)
.Where(x => x.Tables["Adresse"].Select("AdrLabel LIKE '%TEST%'"));
cbWohndresse.DisplayMember = "Adresse.AdrLabel";
cbWohndresse.ValueMember = "Adresse.adress_id";
ds - это DataSet , который я хотел бы использовать в качестве отфильтрованного источника данных. «Адрес» - это один DataTable в этом наборе данных.Он содержит DataColumn "AdrLabel" .Теперь я хотел бы отображать только те «AdrLabel», которые содержат строку из пользовательского ввода.(В настоящее время% TEST% заменяет textbox.text.)
Приведенный выше код завершается ошибкой, поскольку лямбда-выражение не возвращает Bool.Но я уверен, что есть и другие проблемы (какой тип я должен использовать для IEnumerable? Теперь это DataSet, но Дарин использовал String. Но как я могу преобразовать DataSet в строку?
Да, я какКак бы много это ни звучало, мой опыт «ничтожен», и публично так. Поэтому, пожалуйста, прости мне мои довольно глупые вопросы.
Ваша помощь очень ценится, потому что я не могу решить это самостоятельно (пробовалуже тяжело).
Большое спасибо!
Pesche
PS Я использую только Linq для создания несложного фильтра для ComboBox (избегая просмотра). Остальноеоснован не на Linq, а на старом стиле Ado.NET (ds заполняется SqlDataAdapter), если это имеет какое-либо значение.