Edg*_*hen 6 sql linq predicatebuilder
我需要知道使用PredicateBuilder
.在几乎所有如何使用它的示例中,它们显示如下代码:
var predicate = PredicateBuilder.True<employee>();
if (!string.IsNullOrEmpty(txtAddress.Text))
predicate = predicate.And(e1 => e1.Address.Contains(txtAddress.Text));
if (!string.IsNullOrEmpty(txtEmpId.Text))
predicate = predicate.And(e1 => e1.Id == Convert.ToInt32(txtEmpId.Text));
if (!string.IsNullOrEmpty(txtDesc.Text))
predicate = predicate.And(e1 => e1.Desc.Contains(txtDesc.Text));
if (!string.IsNullOrEmpty(txtName.Text))
predicate = predicate.And(e1 => e1.Name.Contains(txtName.Text));
EmployeeDataContext edb= new EmployeeDataContext();
var emp = edb.Employees.Where(predicate);
grdEmployee.DataSource = emp.ToList();
grdEmployee.DataBind();
Run Code Online (Sandbox Code Playgroud)
那个Employee
对象是什么,大于和小于括号之间的对象是什么?我绞尽脑汁想着那个.我正在使用Linq到SQL实体,当我自己尝试这个时,我得到了编译错误.我认为错误是这样的:
"不能从Linq表中投射到......"
我是初学者.请原谅我询问可能是什么显而易见的事情.谢谢.
正如 @MatsRietdijk 在评论部分所述,这是正在使用的泛型。基本上,使用泛型,您可以创建一个对未知的类型/类(在本例中为“员工”)进行操作的方法(尽管您可以使用语句来控制它where
)。
如果您要更改employee
其他类型(例如 )的类型,则lambda 表达式customer
中可用的属性也会有所不同,具体取决于公开公开的属性。例如:
var predicate = PredicateBuilder.True<customer>();
// There is no "CustomerName" property from employee, but there is for customer objects
if (!string.IsNullOrEmpty(txtName.Text))
predicate = predicate.And(e1 => e1.CustomerName.Contains(txtName.Text));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
301 次 |
最近记录: |