Я хотел бы вернуть результат запроса LINQ к массиву, тогда список будет выглядеть в этом массиве, например, с буквой "A". И возвратите список в поле со списком, содержащее все буквы "A".
Мой запрос linq:
var collectionName = (
from row in repos.GetTable<Table_Names>()
select row.Name
).Distinct().ToArray();
И теперь я не знаю, как искать массив так, чтобы он найдут все из них, содержащие букву "A".
В конечном счете, я хотел бы искать в массиве вместо отправки запросов в базу данных. Это приведет к тому, что список в combobox будет сужаться динамически.
Если вы не хотите фильтровать в базе данных, вы можете использовать linq to objects для дальнейшего фильтрации коллекции в памяти:
var filtered = collectionName.Where(item => item.Contains("A")).ToArray();
Вы можете использовать SqlMethods.Like в запросе LINQ. Проверьте код ниже
private void comboBox1_TextChanged(object sender, EventArgs e)
{
comboBox1.DataSource = getItems(comboBox1.Text);
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "ID";
}
public static List<ComboboxItem> getItems(string text)
{
DataClasses1DataContext context = new DataClasses1DataContext();
try
{
List<ComboboxItem> Ilist = new List<ComboboxItem>();
var query = from x in context.testComboBoxes where SqlMethods.Like(x.name, '%' + text +'%') select x;
foreach (var q in query)
{
ComboboxItem item = new ComboboxItem();
item.ID = q.id;
item.Name = q.name;
Ilist.Add(item);
}
return Ilist;
}
catch (Exception ex)
{
return null;
}
}
public class ComboboxItem
{
public object ID { get; set; }
public string Name { get; set; }
}