gpt4 book ai didi

sql - 在使用 PredicateBuilder 方面需要帮助

转载 作者:行者123 更新时间:2023-12-04 15:46:22 24 4
gpt4 key购买 nike

我需要了解使用 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();

那是什么 Employee对象,大于和小于括号之间的那个?我在那个上绞尽脑汁。我正在使用 Linq to SQL 实体,当我自己尝试时遇到编译错误。我认为错误是这样的:

"Cannot cast from a Linq table to..."



我是初学者。请原谅我问什么可能是显而易见的事情。谢谢你。

最佳答案

正如@MatsRietdijk 在评论部分所述,这是正在使用的泛型。基本上,使用泛型,您可以创建一个方法,该方法将对未知的类型/类(在本例中为“员工”)进行操作(尽管您可以使用 where statement 控制它)。

如果您要更改 employee输入其他类型(例如 customer ),然后是 lambda expressions 中可用的属性也会有所不同,基于公开暴露的任何属性。例如:

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));

关于sql - 在使用 PredicateBuilder 方面需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13261700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com