C# Linq 列表与数据网格中的列表
C# Linq list with list in datagrid
我有一个包含字符串 属性 的列表和另一个列表。
我如何在数据网格中同时显示字符串 属性 和包含列表中的属性?
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
非常感谢您。
如果您想从信息列表中获取每个主要项目的最后一条记录,您可以这样写:
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,
};
如果可以更改 Main
class 的静态方法是提供要公开的其他 class 属性的 string
-properties:
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;
}
}
}
其他方法:
- 您可以使用新的 class 来满足这个要求
你可以使用匿名类型:
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();
我有一个包含字符串 属性 的列表和另一个列表。 我如何在数据网格中同时显示字符串 属性 和包含列表中的属性?
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
非常感谢您。
如果您想从信息列表中获取每个主要项目的最后一条记录,您可以这样写:
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,
};
如果可以更改 Main
class 的静态方法是提供要公开的其他 class 属性的 string
-properties:
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;
}
}
}
其他方法:
- 您可以使用新的 class 来满足这个要求
你可以使用匿名类型:
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();