c# - 为什么返回 String.Length 而不是 DataSource 中的实际值

标签 c# datagridview datasource ilist

我有这段代码可以构建一个 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 怎么会显示每个数据库的长度...
display length of database names
...而不是名字?我运行了这个测试:

foreach (string db in databases)
{
    //  winform treeview control
    trv_ServerObjects.Nodes.Add ( db );
}

...我得到以下结果:
display database name

最佳答案

因为 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/

相关文章:

c# - 如何找到datagridview中存在的行并将其附加到datagridview的最后一行

database - 在 VB.NET 中使用 OLEDB 通过 DataGridView 更新 Access 数据库

c# - 如何在 Winforms 中获取 TreeNode 的层次结构索引

c# - 多线程编程

c# - Html.DisplayFor 在 mvc 4 Razor View 中使用它提交时不返回值

c# - 填充后查找 DGV 中的总行数

java - 如何从 Connection 对象确定 DBMS

c# - 从剪贴板读取文本

c# - 在最近的工具更新失败并出现依赖错误后添加 Controller

mysql - 为 vb.net 2010 创建远程 mysql 数据源