我有一个“人物”对象列表:
public class Person
{
public Int32 Id { get; set; }
public String Name { get; set; }
public Document oDocument { get; set; }
}
还有Document类。
public class Document
{
public String Type { get; set; }
public String Code { get; set; }
}
我需要使用该列表填充DataGridView,只显示两列:Name(Person)和DocumentCode(Document)
我使用了这段代码,但我得不到我想要的东西。
dgvPersona.DataSource = list;
答案 0 :(得分:2)
您需要选择anonymous type对象(以投影必填字段),然后将其绑定到您的gridview,如:
var list = (from p in persons
select new
{
Name = p.Name,
DocumentCode = p.Document.Code
}).ToList();
dgvPersona.DataSource = list;
您也可以选择Id
并将其保存在gridview中的隐藏列中,以便稍后您可以将其用于记录更新等。
答案 1 :(得分:1)
试试这个:
public class Person
{
public Int32 Id { get; set; }
public String Name { get; set; }
public Document oDocument { get; set; }
}
public class Document
{
public String Type { get; set; }
public String Code { get; set; }
}
List<Person> list = new List<Person>();
dgvPersona.DataSource= list.Select(data => new { data.Name, data.oDocument.Code }).ToList();