使用 LINQ 从字典中获取所有值,以列出匿名类型
本文关键字:类型 LINQ 字典 获取 使用 | 更新日期: 2024-11-09 01:03:40
我有一个学生班。
class student : DynamicObject
{
public Dictionary<string, object> dics = new Dictionary<string, object>();
}
在我动态地向此类添加属性。在我填充了一个
list<student> lists,
我如何使用linq检索每个学生类中字典中的键和值。这样我就可以将其绑定到数据网格。每个学生对象中的所有字典的键都是相同的,因为这将是列名。列值的值会有所不同。这样我就可以将此匿名类型绑定到数据网格。我尝试了以下方法。但结果是不正确的。
var result = lists.SelectMany(x => x.Dictionary.Keys).Select(m => new
{
StudentID = m[1],
RegNo = m[2],
JoinYear = m[3]
}).ToList();
终于可以这样绑定了,
grid.DataSource = result;
grid.DataBind();
因此,网格将显示字典键中的列,并且所有行都将使用字典值填充。任何帮助???
非常感谢。
您的SelectMany
是不必要的 - 您希望为每个学生选择一行,而不是为每个学生的每个属性选择一行,因此您只需要一个Select
:
var result = lists.Select(m => new
{
StudentID = m.Dict["StudentID"],
RegNo = m.Dict["RegNo"],
JoinYear = m.Dict["JoinYear"]
}); // no need for ToList if you're just binding.
当然,在 IMO 上,最好在 Student
对象上使用强类型属性并从存储过程中正确填充它们;这里根本不需要匿名对象。