Foreach循环帮助c#

本文关键字:帮助 循环 Foreach | 更新日期: 2023-09-27 18:18:24

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

然而,我无法让循环工作!有人能告诉我或解释我在这里做错了什么吗?

Foreach循环帮助c#

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

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

但是为什么需要检查ClientID是否与viewstate和CID中的相同呢?

首先,为什么你有一个foreach设置2个场景,即设置一些对象的可见性为假或真。想象一下,如果你的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;
}

你的代码有几个地方很奇怪:

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是否可见取决于查询中的最后一个元素。那么,为什么要循环播放整个内容呢?