2010-07-06 28 views
0
if(){...} 
else{...} 
      if (query.Count > 0){...} 

上面顯示的框架與我使用的框架相似。在第一個if-then-else序列中,我初始化一個查詢變量(在LINQ中使用),稱爲query,然後在下一個if語句中檢查它。環境仍然表示查詢不會在當前上下文中顯示。如果if-then語句中的代碼被單獨使用 - 則不會出現任何問題。在我看來,問題在於變量的初始化。你有什麼其他的建議?在上下文中找不到可查詢變量

如果你有一個想法,如何用空值初始化一個要用鏈接查詢的變量 - 我也很樂意聽到這個。謝謝!

回答

0

的問題是,「查詢」變量的作用域需要比您在其中定義的「查詢」的範圍更大。

但是既然您已經使用了var,那麼在編譯器有足夠的信息來選擇類型之前,您不能聲明「query」。

要解決,只需在所需範圍內聲明變量的類型(不要使用var)。 Linq中

IEnumerable<Customer> query = null; 

if() 
{ 
    query = ... 
} 
else 
{ 
    query = ... 
} 

if (query.Any()) 

沒什麼取決於使用var關鍵字。瞭解更多關於varhere

2

之前聲明變量的if-else:

//replace var with the actual type, of course 
var query; 
if(){...} 
else{...} 

if (query.Count > 0){...} 
+0

什麼是真正的類...我期望變量包含一個列表(或者在這種情況下它的第一個條目,因此它是IQuariable類型) var query;是不允許的,因爲它不是一個真正的初始化。 – Branimir 2010-07-06 21:29:48

+1

通常,它是'IEnumerable ',其中T是你提取的任何東西。 – 2010-07-06 21:41:50