将foreach循环中发生的条件作为参数传递

fyo*_*anz 3 c#

我有一种方法可以将列表中某些学生对象的数据添加到数据表中.该方法检查studentList中满足特定条件的学生,然后将它们添加到数据表中.

我想在参数中指定条件,但是当我尝试将s.status作为我的第二个字符串参数传递时,我(理解上)会出错,因为在foreach循环开始之前s不会发挥作用.有没有办法让这项工作?

    public void AddDataTableRows(DataTable datatable, string field, string condition)
    {
       foreach (student s in studentList)
       {
           if (field == condition)
           {
               datatable.Rows.Add(s.name, 
                   s.totalDays, 
                   s.improveOverall,
                   s.totalClassDays,
                   s.instructor,
                   s.grade);
           }

       }
   }
Run Code Online (Sandbox Code Playgroud)

我想要的电话

AddDataTableRows(DataTable1, s.status, "active");
Run Code Online (Sandbox Code Playgroud)

Ese*_*ser 6

它可以是这样的

public void AddDataTableRows(DataTable datatable, Func<Student,bool> cond)
{
    foreach (student s in studentList)
    {
        if (cond(s))
        {
            datatable.Rows.Add(s.name,
                s.totalDays,
                s.improveOverall,
                s.totalClassDays,
                s.instructor,
                s.grade);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

你现在可以称之为 AddDataTableRows(...., s => s.Status == "active");