1

我有一个“人”对象列表:

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;
4

2 回答 2

2

您需要选择一个匿名类型对象(以投射必填字段),然后将其绑定到您的 gridview,如:

var list = (from p in persons
            select new 
                   {
                   Name = p.Name,
                   DocumentCode = p.Document.Code
                   }).ToList();

dgvPersona.DataSource = list;

您也可以选择 并将Id其保存在 gridview 的隐藏列中,以便稍后您可以将其用于记录更新等。

于 2013-03-18T05:51:07.623 回答
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();
于 2013-03-18T05:53:53.143 回答