2011-12-21 150 views
0

我目前正試圖從數據庫中使用變量拉數據,然後將其傳遞到foreach循環,以確定是否應該顯示基於值的按鈕。Foreach循環幫助c#

到目前爲止,我有這樣的:

var Inter = from x in db.DT_Interviews where x.ClientID == int.Parse(ViewState["ClientID"].ToString()) && x.ClientID == CID select x; 

foreach(var c in Inter) 
{ 
    if (c.InterviewDone == true) 
     BTI.Visible = false; 
    else 
     BTI.Visible = true; 
} 

但是我無法獲得循環的工作!有人可以向我展示或解釋我在這裏做錯了什麼嗎?

+0

也許國際空間是空的?它是什麼類型的對象? – 2011-12-21 10:25:30

+1

您是否檢查過「Inter」是否包含任何元素? – 2011-12-21 10:25:53

+0

無法在一次迭代中退出循環或跳過循環? – PresleyDias 2011-12-21 10:26:12

回答

0

首先,爲什麼你有一個foreach只能設置2場景,即設置某些對象的可見性爲false或true。想象一下,如果你的Inter有5個bool值,那麼你的對象的可見性取決於Inter中的最後一個值,因爲它會繼續循環直到它達到最後一個值。不是嗎。試試這個代碼:

在這裏,一旦它找到第一個值,我就會在Inter中獲得一個bool值。

var Inter = (from x in db.DT_Interviews 
      where x.ClientID == int.Parse(ViewState["ClientID"].ToString()) && x.ClientID == CID 
      select x.InterviewDone).FirstOrDefault(); 

if(Inter) 
{ 
    BTI.Visible = false; 
}  
else 
{ 
    BTI.Visible = true; 
} 
0

你的代碼是很奇怪的在幾個地方:

var Inter = 
    from x in db.DT_Interviews 
    where x.ClientID == int.Parse(ViewState["ClientID"].ToString()) && x.ClientID == CID 
    select x; 

你確定你的查詢返回的任何結果? CID的價值是什麼?

foreach(var c in Inter) 
    { 
    if (c.InterviewDone == true) 
      BTI.Visible = false; 
     else 
      BTI.Visible = true; 
     } 
    } 

我不確定你在這裏做什麼? BTI將可見或不依賴於查詢中的最後元素。那麼,爲什麼要循環整個內容呢?

1

如果你想顯示BTI如果任何採訪被關聯到視圖狀態的客戶ID和具有InterviewDone標誌= true,則可以使用:

int clientID = int.Parse(ViewState["ClientID"].ToString()); 
BTI.Visible = db.DT_Interviews.Any(x => x.ClientID == clientID && x.InterviewDone); 

但是,爲什麼你需要檢查ClientID與視圖狀態和CID中的一樣?