繁体   English   中英

Foreach循环帮助C#

[英]Foreach loop help c#

我目前正在尝试使用变量从数据库中提取数据,然后将其传递到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;
 }

但是我无法使循环正常工作! 有人可以告诉我或解释我在做什么错吗?

如果您试图显示BTI是否有任何采访与viewstate客户ID相关联并且InterviewDone标志= true,则可以使用:

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

但是,为什么需要检查ClientID是否与视图状态AND CID中的ClientID相同?

您的代码在几个地方很奇怪:

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将可见或没有减少查询中的最后一个元素。 那么,为什么要遍历整个内容呢?

首先,为什么有一个foreach仅设置2个场景,即将某个对象的可见性设置为false或true。 想象一下,如果您的Inter具有5个bool值,那么对象的可见性取决于Inter中的最后一个值,因为它会继续循环直到达到最后一个值。 是不是 试试这个代码:

在这里,只要找到第一个值,我就会在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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM