0

我有一个学生班。

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();

因此,网格将显示字典键中的列,并且所有行都将使用字典值填充。有什么帮助吗???

非常感谢。

4

1 回答 1

1

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对象上使用强类型属性并从存储过程中正确填充它们;nyou 根本不需要匿名对象。

于 2012-08-07T07:57:00.800 回答