Помощь по циклу Foreach c # - PullRequest
       25

Помощь по циклу Foreach c #

0 голосов
/ 21 декабря 2011

В настоящее время я пытаюсь извлечь данные из базы данных, используя переменную, а затем передать их в цикл foreach, чтобы определить, должна ли кнопка отображаться на основе значения.

Так далеко у меня есть это:

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;
 }

Однако я не могу заставить цикл работать! Может кто-нибудь показать мне или объяснить, что я здесь делаю не так?

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Если вы пытаетесь показать BTI, если какое-либо интервью связано с идентификатором клиента ViewState и имеет флаг InterviewDone = true, вы можете использовать:

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

Но зачем вам это проверять?ClientID совпадает с идентификатором в состоянии просмотра И CID?

0 голосов
/ 21 декабря 2011

Во-первых, почему у вас есть 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 голосов
/ 21 декабря 2011

Ваш код очень странный в нескольких местах:

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 будет виден или не будет отображаться в элементе last в вашем запросе.Итак, зачем тогда перебирать весь контент?

...