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

C# 为什么返回String.Length而不是DataSource中的实际值,c#,datagridview,datasource,ilist,C#,Datagridview,Datasource,Ilist,我有这个代码,它构建了一个IList: 。。。我得到以下结果: 因为dgrid_Main上的DataSource属性将绑定集合中对象的每个公共属性,而不是对象本身。长度是字符串对象的一个公共属性 当您实际遍历IList时,会得到数据库名称列表 试试这个 dgrid_Main.DataSource = databases.ToList().Select(db => new { db }); 我不知道为什么会发生这种情况,但我尝试过使用绑定源吗 BindingSource binding1

我有这个代码,它构建了一个
IList

。。。我得到以下结果:

因为dgrid_Main上的DataSource属性将绑定集合中对象的每个公共属性,而不是对象本身。长度是字符串对象的一个公共属性

当您实际遍历IList时,会得到数据库名称列表

试试这个

dgrid_Main.DataSource = databases.ToList().Select(db => new { db });

我不知道为什么会发生这种情况,但我尝试过使用绑定源吗

BindingSource binding1 = new List<string> ( _dr.SelectFromReader ( reader =>
    reader[ 0 ] is DBNull ? null : reader[ 0 ].ToString ( ) ) );

这是因为它试图显示预测值的所有公共属性。strong唯一的公共财产是Length@Henk-事实上;iSpellingNice的危险在于没有编辑窗口。+1:谢谢你的解释(也对@Marc Gravell)完全有道理。谢谢你的提示。。。
dgrid_Main.DataSource = databases.ToList().Select(db => new { db });
BindingSource binding1 = new List<string> ( _dr.SelectFromReader ( reader =>
    reader[ 0 ] is DBNull ? null : reader[ 0 ].ToString ( ) ) );
dgrid_Main.DataSource = binding1