2

そのようなメソッド署名を考えると...

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

}
4

2 に答える 2

3

は入力として受け取るpredicate関数なので、 のように使用します。DataRowwhere predicate(student)

var students = from student in _dataSet.Tables[0].AsEnumerable()
    ...
    where predicate == null || predicate(student)
    select student
于 2013-07-18T22:48:32.650 に答える
2

私はあなたが欲しいと思います:

where predicate == null || predicate(student)
于 2013-07-18T22:51:35.363 に答える