Lea*_*ner 5 c# linq autocomplete winforms
我想使用 LINQ 将自动完成功能设置为文本框。我已经用 sqlCommands 以一种方式做了。代码是
OleDbCommand cmdinst = new OleDbCommand("select distinct cst_City from cstTable", con);
OleDbDataReader drinst = cmdinst.ExecuteReader();
AutoCompleteStringCollection instcol = new AutoCompleteStringCollection();
while (drinst.Read())
{
instcol.Add(drinst.GetString(0));
}
txtCity.AutoCompleteCustomSource = instcol;
Run Code Online (Sandbox Code Playgroud)
这样我就可以将自动完成自定义源添加到文本框。现在我想使用 LINQ添加相同的功能。请任何人帮助我..
AutoCompleteStringCollection字符串一一添加效率不高。因为当添加每个字符串时,如果没有足够的空间容纳新字符串,内部数组列表会确保其容量并调整存储大小(使其大两倍)。此外,每个添加的字符串CollectionChangedEvent都会尝试触发。当您通过AddRange存储添加值时,仅调整大小一次,并且CollectionChangedEvent仅触发一次。
您也可以简单地应用Distinct运算符,而不是分组和选择第一组。
var db = FooDataContext();
var cities = db.cstTable.Select(c => c.cst_City).Distinct().ToArray();
AutoCompleteStringCollection instcol = new AutoCompleteStringCollection();
instcol.AddRange(cities);
txtCity.AutoCompleteCustomSource = instcol;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6145 次 |
| 最近记录: |