我有bool类型的列表。我正在检查条件,如果条件为真,结果(我的意思是真)将被添加到列表中,并且对于else部分也是如此。现在我想比较列表中的这两个bool值,并获得最终值以将其分配给变量。
我使用了下面的代码,但是在为变量赋值时会出现一些错误。
a->b
答案 0 :(得分:0)
实际上,如果您在循环中所做的只是检查条件,那么您不需要该列表或此特定方案的任何其他临时变量:
您可以使用简单All
替换所有代码:
model.IsTempVariable = fObject.All(f=> the condition);
如果你在循环中做其他的东西,那么使用像这样的临时变量:
bool tempVar = true;
foreach (f in fObject)
{
.. your other stuff ...
if (!condition) tempVar = false;
}
model.IsTempVariable = tempVar;
如果你真的必须有一个列表,那么如果所有值都为真,请再次检查All
:
model.IsTempVariable = temp1.All(b=>b);
答案 1 :(得分:0)
从正确格式化的代码开始:
var temp1= new List<bool>();
fObject.ForEach((f) =>
{
if (condition)
{
temp1.Add(true);
}
else
{
temp1.Add(false);
}
});
var value = (
from p in temp1
from q in temp1
select p && q);
model.IsTempVariable = value;
简化(我假设条件是bool表达式,取决于f):
var temp1= fObject
.Select(f => condition)
.ToList();
var value = (
from p in temp1
from q in temp1
select p && q);
model.IsTempVariable = value;
从此处删除vars将显示问题:
List<bool> temp1= fObject
.Select(f => condition)
.ToList();
IEnumerable<bool> value = (
from p in temp1
from q in temp1
select p && q);
model.IsTempVariable = value;
错误(您应该包含在问题中)是,IsTempVariable(可能是bool
)无法分配IEnumerable<bool>
值。
答案是:停止使用var,您将了解您的类型并做出正确的决定。
这是我如何为两个项目编写代码:
Customer item1 = fObject[0];
Customer item2 = fObject[1];
Func<Customer, bool> condition = f => conditionExpression;
model.IsTempVariable = condition(item1) && condition(item2);