2009-12-10 133 views
1

我需要遍歷自定義對象類型的屬性,我從數據庫中取回並僅顯示包含數據的列。 這意味着我不能簡單地將對象列表綁定到數據網格。 我不想遍歷每個對象,看看列是否爲空/空,並確定在UI中顯示它。 我在發送對象之前在我的業務層中發送了一個IEnumerable,只有那些應該可見的列。因此,我正在考慮使用Linq來實現這一點,但我不確定這會非常漂亮。C#匿名類型foreach循環

有沒有人知道我可以使用沒有大量IF語句的解決方案,我可以通過一個大對象(30列左右)來確定應該顯示或不顯示的內容。

Foreach (CustomerData customerdata in Customers) 
{ 
    if (!customerdata.address.Equals("")) 
     { 
      dgvCustomerData.Column["Address"].visible = false; 
     } 
     //Continue checking other data columns... 
} 

我希望避免在UI所有這一切,所有的國際單項體育聯合會... 我有在這一個大腦放屁誰能幫助我?

感謝

回答

1

看看the .NET Reflection Libraries。您可以使用反射來獲取所有對象的屬性,並循環查看它們是否爲null。然後,您可以返回Key =屬性名稱和Value = true/false的KeyValuePair對象集合。然後,您將使用keyvaluepairs設置列的可見性...

+0

這更多的是我在想的解決方案,但是我並沒有使用散列表,而是考慮更多的IEnumerable列表,然後我可以簡單地綁定到數據網格。我會再研究一下。 – Bob 2009-12-10 18:54:19

4

你可以做以下簡化它有點

Action<T,string> del = (value,name) => { 
    if (value.Equals("")) { 
    dgvCustomerData.Column[name].Visible = false; 
    } 
}; 
foreach (var data in Customers) { 
    del(data.address,"Address"); 
    del(data.name, "Name"); 
    ... 
} 
+0

我想從UI層拉出來,以便UI不必決定顯示或不顯示。然而,這是我首先想到的做法。 – Bob 2009-12-10 18:52:20