提问
我如何重构此函数,以便可以使用许多参数?程序具有很多参数,例如年龄,颜色等.
所以我有这个功能:
public int GetAgesOnProgram(IEnumerable<Program> ProgramList)
{
return (from x in ProgramList
where x.Ages.Any()
select x.Ages).Count();
}
但我也需要这个:
public int GetColorsOnProgram(IEnumerable<Program> ProgramList)
{
return (from x in ProgramList
where x.Colors.Any()
select x.Colors).Count();
}
由于我在Program中有多达10个多对多关系,我想拥有一个可以处理该问题的函数是有意义的吗?
编辑:
我如何返回年龄或颜色列表,而不是像下面这样的整数:
public IEnumerable<Color> GetColorsOnProgram(IEnumerable<Program> ProgramList)
{
return (from x in ProgramList
where x.Colors.Any()
select x.Colors);
}
最佳答案
您可以将功能更改为:public int GetCountOnProgram(IEnumerable<Program> ProgramList, Func<Program,bool> whereClause)
{
return ProgramList.Where(whereClause).Count();
}
然后调用:
GetCountOnProgram(programList, x => x.Ages.Any());