[英]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.