dotnet fiddle 上的演示 https://dotnetfiddle.net/l3p469
解决方案1
您可以使用Func<StudentInfo, bool>
来实现它。
private static IEnumerable<IGrouping<int, StudentInfo>> SomeFunction(List<StudentInfo> list, Func<StudentInfo, bool> selector)
{
return list.GroupBy(x => x.GroupID)
.Where(g => g.Any(selector) )
.Select(g => g);
}
如何使用它?
var result1 = SomeFunction(StudentsList, p => p.IsQualified == true);
var result2 = SomeFunction(StudentsList, p => p.Student == "Adam");
解决方案2(创建扩展方法)
public static IEnumerable<IGrouping<int, StudentInfo>> ExtensionMethod_SomeFunction(this IEnumerable<StudentInfo> list, Func<StudentInfo, bool> selector)
{
return list.GroupBy(x => x.GroupID)
.Where(g => g.Any(selector) )
.Select(g => g);
}
如何使用它?
var result3 = StudentsList.ExtensionMethod_SomeFunction(p => p.IsQualified == true);
var result4 = StudentsList.ExtensionMethod_SomeFunction(p => p.Student == "John");