Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将谓词传递给linq表达式_C#_Linq_Predicate - Fatal编程技术网

C# 如何将谓词传递给linq表达式

C# 如何将谓词传递给linq表达式,c#,linq,predicate,C#,Linq,Predicate,给定一个这样的方法签名 IEnumerable<Student> get(Func<DataRow, bool> predicate); IEnumerable get(Func谓词); 如何将谓词参数传递给linq表达式 public override IEnumerable<Student> get(Func<System.Data.DataRow, bool> predicate = null) { var students =

给定一个这样的方法签名

IEnumerable<Student> get(Func<DataRow, bool> predicate);
IEnumerable get(Func谓词);
如何将谓词参数传递给linq表达式

public override IEnumerable<Student> get(Func<System.Data.DataRow, bool> predicate = null) {
    var students = from student in _dataSet.Tables[0].AsEnumerable()
              join attendance in _dataSet.Tables[1].AsEnumerable() 
              on student.Field<int>("id") equals attendance.Field<int>("idStudent")
              join grade in _dataSet.Tables[2].AsEnumerable()
              on student.Field<int>("id") equals grade.Field<int>("idStudent")
              join assignment in _dataSet.Tables[3].AsEnumerable()
              on student.Field<int>("id") equals assignment.Field<int>("idStudent")
              // where predicate??
              // select blahblahblah
    // return statement

}
public重写IEnumerable get(Func谓词=null){
var students=来自_dataSet.Tables[0]中的student.AsEnumerable()
在_dataSet.Tables[1].AsEnumerable()中加入考勤
on student.Field(“id”)等于attention.Field(“idStudent”)
在_dataSet.Tables[2].AsEnumerable()中联接等级
on student.Field(“id”)等于grade.Field(“idStudent”)
_dataSet.Tables[3].AsEnumerable()中的联接赋值
on student.Field(“id”)等于assignment.Field(“idStudent”)
//谓词在哪里??
//选择blahblahblah
//返回语句
}

因为
谓词
是一个将
数据行
作为输入的函数——就像
where谓词(student)
一样使用它

我想你想要:

where predicate == null || predicate(student)

因为看起来谓词可以为null,所以需要做更多的工作来考虑未提供该谓词的可能性。
where predicate == null || predicate(student)