score:2

Accepted answer
var result = list.where(
                i => !i.username.startswith("e-")
                     && i.ssn != null && i.ssn != ""
                     && i.displayname != null && i.displayname != ""
                     && i.lastname != null && i.lastname != ""
                     && i.firstname != null && i.firstname != ""
                     && (condition? 
                     i.whenchanged.hasvalue && i.whenchanged.value > datetime.utcnow.add(_whenchangedtimespan) 
                     : true)).tolist();

score:0

var firstqueryresult = yourinput.where(i => 
    !i.username.startswith("e-") &&
    i.ssn != null && i.ssn != "" &&
    i.displayname != null && i.displayname != "" &&
    i.lastname != null && i.lastname != "" &&
    i.firstname != null && i.firstname != "" &&
).tolist();

var secondqueryresult = firstqueryresult
    .where(i=> i.whenchanged.hasvalue && i.whenchanged.value > datetime.utcnow.add(_whenchangedtimespan))
    .tolist();

score:0

var result = (...).where(
i => !i.username.startswith("e-")
&& i.ssn != null && i.ssn != ""
&& i.displayname != null && i.displayname != ""
&& i.lastname != null && i.lastname != ""
&& i.firstname != null && i.firstname != ""
).tolist();

var filteredresult = result.where(i.whenchanged.hasvalue && i.whenchanged.value > datetime.utcnow.add(_whenchangedtimespan)).tolist();

Related Query