如何比较c#中列表中的两个bool类型值

时间:2017-06-03 12:41:14

标签: c# asp.net-mvc linq model-view-controller

我有bool类型的列表。我正在检查条件,如果条件为真,结果(我的意思是真)将被添加到列表中,并且对于else部分也是如此。现在我想比较列表中的这两个bool值,并获得最终值以将其分配给变量。

我使用了下面的代码,但是在为变量赋值时会出现一些错误。

a->b

2 个答案:

答案 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);