请帮助我使用 Linq 重构这段代码。如何只使用一次 Where 和 ToList? 感谢帮助
private IEnumerable<SomeClass> Filter(IEnumerable<SomeClass> aaa, string name, string company, string address,int? age)
{
var ans = new List<SomeClass>();
if (!String.IsNullOrEmpty(name))
ans = aaa.Where(x => x.name.equal(name)).ToList();
if (!String.IsNullOrEmpty(company))
ans = ans.Where(x => x.company.equal(company)).ToList();
if (!String.IsNullOrEmpty(address))
ans = ans.Where(x => x.address.equal(address)).ToList();
if (age.HasValue)
ans = ans.Where(x => x.age == age.Value).ToList();
return ans;
}
最佳答案
你可以使用这个:
var ans = aaa.Where( x => ( string.IsNullOrEmpty(name)
|| x.name.equal(name)
)
&&
( string.IsNullOrEmpty(company)
|| x.company.equal(company)
)
&&
( string.IsNullOrEmpty(address)
|| x.address.equal(address)
)
&&
( !age.HasValue
|| x.age == age.Value
)
);
关于c# - Linq代码重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967095/