C# Linq 列表,数据网格中的列表

本文关键字:列表 网格 数据网 数据 Linq | 更新日期: 2024-11-07 19:52:52

我有一个包含字符串属性的列表和另一个列表。如何在数据网格中同时显示字符串属性和包含列表中的属性?

public class Main
{
    public string Name { get; set; }
    public List<Info> Info { get; set; }
}
public class Info
{
    public string Info1 { get; set; }
    public string Info2 { get; set; }
}

我希望我的数据网格显示如下内容:

 #Name    #Info1    #Info2
  name     info1     info2
  name     info1     info2

提前非常感谢你。

C# Linq 列表,数据网格中的列表

如果可以更改Main类,静态方法是提供要公开的其他类中的属性的string -属性:

public class Main
{
    public string Name { get; set; }
    public List<Info> Info { get; set; }
    public string Info1 { 
        get {
            return Info == null || Info.Count == 0 ? "" 
                : Info.Last().Info1; 
        } 
    }
    public string Info2
    {
        get
        {
            return Info == null || Info.Count == 0 ? ""
                : Info.Last().Info2;
        }
    }
}

其他方法:

  • 您可以为此要求使用新类
  • 您可以使用匿名类型:

    this.dataGridView1.DataSource = mains
    .Select(m => new { 
        m.Name, 
        Info1 = m.Info.Last().Info1,
        Info2 = m.Info.Last().Info2, // add null or count=0 check here
    }).ToList();
    

如果要从"信息"列表中获取每个主条目的最后一条记录,可以编写:

var q = from m in mainList
        let i = m.Info.LastOrDefault()
        select new
        {
            m.Name,
            Info1 = i == null ? null : i.Info1,
            Info2 = i == null ? null : i.Info2,
        };