2009-11-20 61 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; 
相關問題