2009-11-20 59 views
0

我有一个类MyObj和一个集合IEnumerable。 某些列在所有行中都是全空的(即== NULL),因此我想创建一个MyObj成员的IEnumerable,其中包含一个非空值。LINQ to IEnumerable <MyObj>

如果我能预测MyObj中的成员这将是感兴趣我会做这样的事情:

var part = 
    from entry in iList 
    select new {entry.a, entry.c, entry.s}; 

...但我不知道我该成员MyObj中的兴趣在设计时间 - 我只知道在运行时。

我该如何构建我的列表?

谢谢,

Tamim Sadikali。

+1

咦?你想做什么。似乎没有道理...... – 2009-11-20 15:08:01

回答

0

你的问题没有意义。

您正试图创建一个只在运行时才知道其成员的类型。
你会对结果做什么?
您将无法访问结果对象的任何属性,因为它们可能不存在。

如果要在网格中显示数据,并且不想显示完全为空的列,则应将原始集合绑定到网格,然后隐藏网格中的一些列。

0

等待发布VS2010,C#4.0与它的'动态'类型应该可以解决您的问题。 (或者也许可以帮助你在脚下自拍)。

+0

'dynamic'关键字在这里没有帮助;这个问题没有任何意义。 – SLaks 2009-11-20 15:12:43

+0

但MethodBags应该? – nothrow 2009-11-20 15:24:11

0

如果您正在为UI执行此操作,请更好地隐藏包含所有空值的列。对于WinForms中的DataGridView,它可能看起来像这样:

foreach (DataGridViewColumn column in dataGridView.Columns) 
    if (dataGridView1.Rows.Cast<DataGridViewRow>().All(r => r.Cells[column.Name].Value == null)) 
     column.Visible = false; 
相关问题