C# 如何将一个类的对象列表绑定到一个datagridview,该datagridview的一个字段又是另一个类的对象?
我有以下代码,其中我必须将类的对象列表绑定到datagridview。在这个类中,一个字段是另一个类的对象,这个类中也有一些字段。请参考代码C# 如何将一个类的对象列表绑定到一个datagridview,该datagridview的一个字段又是另一个类的对象?,c#,winforms,list,datagridview,C#,Winforms,List,Datagridview,我有以下代码,其中我必须将类的对象列表绑定到datagridview。在这个类中,一个字段是另一个类的对象,这个类中也有一些字段。请参考代码 public class Test { public string m_field1_Test { get; set; } public string m_field2_Test { get; set; } public string m_field3_Test { get; set; } public string m_f
public class Test
{
public string m_field1_Test { get; set; }
public string m_field2_Test { get; set; }
public string m_field3_Test { get; set; }
public string m_field4_Test { get; set; }
.
.
public string m_field100_Test{get; set;}
public Test1 test1obj;
public Test()
{
m_field1_Test = "field1";
m_field2_Test = "field2";
m_field3_Test = "field3";
m_field4_Test = "field4";
.
.
m_field100_Test = "field100";
test1obj = new Test1();
}
}
public class Test1
{
public string m_field1_Test1;
public string m_field2_Test1;
public string m_field3_Test1;
.
.
.
public string m_field30_Test1;
public Test1()
{
m_field1_Test1 = "field1_Test1";
m_field2_Test1 = "field2_Test1";
m_field3_Test1 = "field3_Test1";
.
.
.
m_field30_Test1 = "field30_Test1";
}
}
单击一个按钮,我将测试对象列表绑定到dataGridView。代码如下
private void Button2_Click(object sender, EventArgs e)
{
List<Test> listTest = new List<Test>();
Test obj;
for (int i = 0; i < 1000000; i++)
{
obj = new Test();
listTest.Add(obj);
}
label1.Text = listTest.Count().ToString();
dataGridView1.DataSource = listTest;
dataGridView1.BackgroundColor = Color.Beige;
}
有人能告诉我如何实现此功能吗???在绑定前将
列表测试转换为匿名对象将公开字段
var dataSource = listTest.Select(l => new {field1 = l.m_field1_Test,
field2 = l.m_field2_Test,
field3 = l.m_field3_Test,
field4 = l.m_field4_Test,
field1_Test1 = l.test1obj.m_field1_Test1,
field2_Test1 = l.test1obj.m_field2_Test1,
field3_Test1 = l.test1obj.m_field3_Test1});
这在循环到1000000时会更好,但我认为循环到1000000不是生产中应该做的事情
如果要消除for循环,可以使用Enumerable.Range
:
var dataSource = Enumerable.Range(0, 1000000).Select(...
另外,作为提示,您应该避免将逻辑放入事件处理程序中。将它拉到自己的方法中,这样它就可以在其他地方重用。我不太确定您在做什么,但看起来您希望Test
继承自test1
,而不仅仅是实例化它。您希望test
具有test1
属性吗?请尝试在数据绑定时检查此tuturial,它具有@paqogomez no i not wnat test从test1继承所需的信息。我想使用Test1的对象将Test1的字段绑定到datagridview。您能否共享完整的逻辑,因为这在我这边不起作用。@Neha我创建了一个来显示其转换方式。对于控制台,您使用“项”迭代数据源。在我的代码中,我将datagridview1.datasource与使用LINQ创建的datasource一起分配。但它再次不起作用。数据将进入datasource,但它不会与gridview控件绑定。最后它起作用了。我错过了一件小事。非常感谢@paqogomez@Neha杰出的我担心我错过了什么。谢谢你的回答(并向上投票!)!
var dataSource = Enumerable.Range(0, 1000000).Select(...