我有这段代码可以构建一个 IList<string>
:
IList<string> databases;
using (MySqlConnection _conn = Session.Connection)
using (MySqlCommand _cmd = _conn.CreateCommand("SHOW databases"))
{
_cmd.Connection.Open ( );
var _dr = _cmd.ExecuteReader();
databases = new List<string> ( _dr.SelectFromReader ( reader =>
reader[ 0 ] is DBNull ? null : reader[ 0 ].ToString ( ) ) );
_cmd.Connection.Close ( );
}
dgrid_Main.DataSource = databases;
遵循扩展方法的工作原理 SelectFromReader
here .
问题是,dgrid_Main 怎么会显示每个数据库的长度...
...而不是名字?我运行了这个测试:
foreach (string db in databases)
{
// winform treeview control
trv_ServerObjects.Nodes.Add ( db );
}
...我得到以下结果:
最佳答案
因为 dgrid_Main 上的 DataSource 属性将绑定(bind)集合中对象的每个公共(public)属性,而不是它自身的对象。 Length 是字符串对象的一个公共(public)属性。
当您实际遍历 IList 时,您将获得数据库名称列表。
试试这个..
dgrid_Main.DataSource = databases.ToList().Select(db => new { db });
关于c# - 为什么返回 String.Length 而不是 DataSource 中的实际值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089431/