[英]How to pass predicate to linq expression
給定這樣的方法簽名...
IEnumerable<Student> get(Func<DataRow, bool> predicate);
如何將謂詞參數傳遞給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
}
由於predicate
是一個將DataRow
作為輸入的函數-像where predicate(student)
一樣使用它。
var students = from student in _dataSet.Tables[0].AsEnumerable()
...
where predicate == null || predicate(student)
select student
我想你要:
where predicate == null || predicate(student)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.