我有一个MyObj类和一个IEnumerable集合。 一些列在所有行中完全为空(即== NULL),因此我想创建一个IEnumerable<> MyObj的成员,其中包含非空值。
如果我可以预测MyObj的成员会感兴趣,我会做类似的事情:
var part =
from entry in iList
select new {entry.a, entry.c, entry.s};
...但我不知道MyObj的哪些成员我在设计时感兴趣 - 我只知道在运行时。
如何构建我的列表?
谢谢,
Tamim Sadikali。
答案 0 :(得分:0)
你的问题没有意义。
您正在尝试创建一个仅在运行时才知道其成员的类型
你会对结果做些什么?
您将无法访问结果对象的任何属性,因为它们可能不存在。
如果要在网格中显示数据,并且不希望显示完全为空的列,则应将原始集合绑定到网格,然后隐藏网格中的某些列。 / p>
答案 1 :(得分:0)
等待发布VS2010,C#4.0,它的“动态”类型可以解决您的问题。 (或者也许可以帮助你射击自己的脚)。
答案 2 :(得分: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;