2011-12-21 2 views
0

В настоящее время я пытаюсь извлечь данные из базы данных с помощью переменной, а затем передать ее в цикл 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

Возможно, Inter пуст? какой тип объекта это? –

+1

Вы проверили, есть ли 'Inter' какие-либо элементы? –

+0

не может, поскольку он выходит из цикла на одной итерации или пропускает цикл? – PresleyDias

ответ

0

Во-первых, почему у вас есть foreach для установки 2 сценариев, только установите видимость некоторого объекта на false или true. Представьте себе, если ваш Inter имеет 5 значений bool, тогда видимость вашего объекта зависит от последнего значения в Inter, потому что он будет продолжать цикл до тех пор, пока он не достигнет последнего значения. Не так ли. Попробуйте этот код:

Здесь я получаю значение bool в Inter, как только оно найдет первое значение.

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 если интервью связано с ViewState идентификатором клиента и иметь флаг InterviewDone = верно, вы можете использовать:

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

Но почему вам нужно проверить, что ClientID такой же, как и в состоянии представления AND CID?

Смежные вопросы