Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ至IEnumerable<;MyObj>;_Linq_Ienumerable - Fatal编程技术网

LINQ至IEnumerable<;MyObj>;

LINQ至IEnumerable<;MyObj>;,linq,ienumerable,Linq,Ienumerable,我有一个MyObj类和一个IEnumerable集合。 有些列在所有行中都是完全空的(即==NULL),因此我想创建一个包含非NULL值的MyObj成员的IEnumerable 如果我能预测MyObj的成员,我会做如下事情: var part = from entry in iList select new {entry.a, entry.c, entry.s}; …但我不知道在设计时我对MyObj的哪些成员感兴趣-我只知道在运行时 如何构建我的列表 谢谢 塔米姆·萨迪卡

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

如果我能预测MyObj的成员,我会做如下事情:

var part = 
    from entry in iList  
    select new {entry.a, entry.c, entry.s};
…但我不知道在设计时我对MyObj的哪些成员感兴趣-我只知道在运行时

如何构建我的列表

谢谢


塔米姆·萨迪卡利。

你的问题毫无意义

您试图创建的类型的成员仅在运行时已知。
您将如何处理结果?
您将无法访问结果对象的任何属性,因为它们可能不存在


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

等待VS2010的发布,具有“动态”类型的C#4.0应该可以解决您的问题。(或者可能有助于你自食其果)。

如果你是为用户界面这么做的,最好隐藏包含所有空值的列。对于WinForms中的DataGridView,它可能如下所示:

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

嗯?你想干什么。似乎没有意义…这里的
动态
关键字没有帮助;这个问题毫无意义。