2013-06-20 66 views
-3

我有以下的(容易)表:顯示在IEnumerable的查詢中的所有空字段

表:MyDataTable

**Color** 
Blue 
null 
Red 
Yellow 
null 
null 
Green 

此查詢(例如):

query = 
     from user in MyDataTable.AsEnumerable() 
     where (user.Field<string>("Color") != null ? user.Field<string>("Color").Contains("") : false) 
     select user; 

顯示所有不爲空的字段。

編輯:對不起,我的問題是在標題。我想要查詢只顯示空字段。 如何? 關心!

+1

爲什麼你需要編寫一個查詢返回數據集中的所有內容?這聽起來像是在浪費CPU週期而什麼都不做。 – evanmcdonnal

+0

因爲這是一個簡單的查詢,這是一個簡單的例子。我的應用有一個更復雜的查詢。我的應用程序只顯示(默認)10項。空字段在查詢中生成異常,並且空字段不顯示在DataGridView中。 –

+0

null不會在查詢中生成異常。它可能會在您嘗試在DataGridView中顯示它時。在這種情況下,你需要像'值? 「null」''基本上說'if(value == null)value =「null」'你要添加項目的地方。關鍵是沒有查詢要寫在這裏,你只需調用'AsEnumerable()'或'AsEnumerable().ToList()'或'.ToArray()'來轉換你的dt。 – evanmcdonnal

回答

2

刪除where條款:

var query = from user in MyDataTable.AsEnumerable() 
      select user; 

或者乾脆:

var query = MyDataTable.AsEnumerable(); 
+3

對於這個問題,也刪除from和select子句。 'MyDataTable.AsEnumerable()'是你所需要的。 –

+0

@ p.s.w.g - 哈哈是的,好點。 –

+0

非常感謝您的幫助。是的,這段代碼顯示了所有的字段,但是我不能只顯示空字段。 –

1

我想提出一個查詢,顯示所有字段(包括空字段)。

要顯示一切,只是直接使用該表:

query = MyDataTable.AsEnumerable(); 

注意,您可以使用String.IsNullOrEmpty簡化現有查詢:

query = 
    from user in MyDataTable.AsEnumerable() 
    where !string.IsNullOrEmpty(user.Field<string>("Color")) 
    select user; 
+0

他希望顯示* all *值的查詢,包括那些爲空的查詢。 – Servy

+0

@Servy已經修復;) –

相關問題