2017-06-03 90 views
-1

我有一個bool類型的列表。我正在檢查一個條件,如果條件爲真,結果(我的意思是真)將被添加到列表中,並且對於其他部分是相同的。現在我想比較列表中的這兩個bool值,並獲取將其分配給變量的最終值。如何比較列表中的兩個bool類型值c#

我已經使用了下面的代碼,但是當賦值給變量時會出現一些錯誤。

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; 
+0

我不明白的問題。你能解釋一下你想解決的問題嗎? – mjwills

+0

爲什麼在循環內設置'model.IsTempVariable'? –

+0

這是我輸入的錯誤。我已經糾正下面..你可以請建議的解決方案? – user8107188

回答

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); 
+0

我需要不修改該foreach塊,如果條件。沒有改變他們我可以得到替代解決方案? – user8107188

+0

是的,看看我答案的最後一行。這會在循環之後立即執行,而不是當前的linq查詢。 –

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; 

簡化(我假設條件是一個布爾表達式,這取決於f):

var temp1= fObject 
    .Select(f => condition) 
    .ToList(); 
var value = (
    from p in temp1 
    from q in temp1 
    select p && q); 

model.IsTempVariable = value; 

從這裏,刪除瓦爾將顯示問題:

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