نحوه استفاده از دستور Func
سلام
من کد زیر را نوشته ام
public ICollection<Employee> Search(string natiolId, string lName, Func<Employee, bool> orderBy)
{
TestEntities db = new TestEntities();
var q = db.T_P_EmployeeBCSpec.Where(u => u.NationalID.StartsWith(natiolId));
q = q.Where(c => c.LastName.StartsWith(lName));
return q.ToList();
}
حال نمی دانم جواب را چکونه در دیتاگرید مورد نظرم نمایش
بدهم
private void btnSearch_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = Search(txtCodeMali.Text, txtLastName.Text);
}
کدم را چگونه باید تغییر بدهم
نقل قول: نحوه استفاده از دستور Func
شما بجای Func<Employee, bool>
برای مرتب سازی باید بصورت Expression<Func<Employee, T>>
نوشته شود.دلیل استفاده از جنریک تایپT در Expression شما باید نوع فیلد که براساس آن مرتب سازی صورت میگیرد را مشخص نمایید برای جلوگیری از کدهای تکراری بصورت جنریک تعریف شده است.
public ICollection<Employee> Search<T>(string natiolId, string lName, Expression<Func<Employee, T>> orderBy)
{
TestEntities db = new TestEntities();
var q = db.T_P_EmployeeBCSpec.Where(u => u.NationalID.StartsWith(natiolId));
q = q.Where(c => c.LastName.StartsWith(lName));
return q.OrderBy(orderBy).ToList();
}
private void btnSearch_Click(object sender, EventArgs e)
{
//مرتب سازی بر اساس فیلدی از نوع string
dataGridView1.DataSource = Search<string>(txtCodeMali.Text, txtLastName.Text,c=>c.lName);
//مرتب سازی بر اساس فیلدی از نوع int
//dataGridView1.DataSource = Search<int>(txtCodeMali.Text, txtLastName.Text,c=>c.Id);
}