早上好。
我使用以下方法尝试并恢复一个bool:
public static bool GetShowCatSubProdStatus(string memberid, string username)
{
MyEnts showcatsubprodstatus = new MyEnts.PDC_VDSOREntities35();
var r = from p in showcatsubprodstatus.tblKeyAccountInfoes
where p.MemberID == memberid && p.UserName == username
select p.ShowCatSubProd;
return r.Any();
}
当我调用此方法并对其进行调试时,结果是正确的。但是,当我在页面加载中运行此方法时,虽然方法结果返回正确的结果,但当我单步执行时,布尔值会发生变化!
bool showcatsubprodstatus = MyEnts.GetShowCatSubProdStatus(_memberid, _username);
if (showcatsubprodstatus != true)
{
panCatSubProd.Visible = false;
}
有人可以解释这里发生了什么,以及如何解决这个益智游戏?!
PS:对于厚厚的道歉。编辑 - 对,将其缩小到变量。无论方法结果如何,它总是返回'true'?!?!
答案 0 :(得分:0)
这段代码返回IEnumerable<bool>
:
var r = from p in showcatsubprodstatus.tblKeyAccountInfoes
where p.MemberID == memberid && p.UserName == username
select p.ShowCatSubProd;
通过调用.Any()
,您可以询问IEnumerable中是否有任何项目。如果有你返回true;
这就是为什么你总能得到回报,因为它总会找到一些东西。
解决方案
要么你去调用.SingleOrDefault()返回唯一的元素(如果有的话)或返回该类型的默认值。
var r = from p in showcatsubprodstatus.tblKeyAccountInfoes
where p.MemberID == memberid && p.UserName == username
select p.ShowCatSubProd;
return r.SingleOrDefault(); //assuming p.ShowCatSubProd is a bool and not a Nullable<bool> else you need to adjust your return type or cast it to a boolean using .GetValueOrDefault().