Which way of writing a conditional test is the most readable? I have three conditions like the following:

if (IsAllTriggersRequired &amp;&amp; meterFlag &amp;&amp; workFlag &amp;&amp; timeFlag)
{
    result.Add(new TodayTaskTest { Code = item1.Code, Id = item1.Id, Title = item1.Title });
}
else if (!IsAllTriggersRequired &amp;&amp; (meterFlag || workFlag || timeFlag))
{
    result.Add(new TodayTaskTest { Code = item1.Code, Id = item1.Id, Title = item1.Title });
}




if ((IsAllTriggersRequired &amp;&amp; meterFlag &amp;&amp; workFlag &amp;&amp; timeFlag) ||(!IsAllTriggersRequired &amp;&amp; (meterFlag || workFlag || timeFlag)))
{
    result.Add(new TodayTaskTest { Code = item1.Code, Id = item1.Id, Title = item1.Title });
}




bool isAdd = false;

if (IsAllTriggersRequired &amp;&amp; meterFlag &amp;&amp; workFlag &amp;&amp; timeFlag)
    isAdd = true;
else if (!IsAllTriggersRequired &amp;&amp; (meterFlag || workFlag || timeFlag))
    isAdd = true;

if (isAdd)
    result.Add(new TodayTaskTest { Code = item1.Code, Id = item1.Id, Title = item1.Title });


In the second one, can I avoid repeating the same code?
I would suggest to add two more intermediate variables:

var allTriggersAvailable = meterFlag &amp;&amp; workFlag &amp;&amp; timeFlag;
var anyTriggerAvailable = meterFlag || workFlag || timeFlag;

if (allTriggersAvailable || (!IsAllTriggersRequired &amp;&amp; anyTriggerAvailable))
{
    result.Add(new TodayTaskTest { Code = item1.Code, Id = item1.Id, Title = item1.Title });
}