DevExpress XPO笔记8:XPO数据过滤功能的实现(二)
XPO数据过滤功能的实现(一)中我们实现了CriteriaOperator的派生类来实现数据过滤,但大家可能会发现一个问题,上面的方法都不是类型安全的,很容易会出现书写的错误,如何避免呢?
我们可以使用新的语法实现数据过滤。
private void btnFilter_Click(object sender, EventArgs e) { OperandProperty op1 = new OperandProperty("Name"); OperandProperty op2 = new OperandProperty("Age"); CriteriaOperator co = op1 == "f" & op2 > 20; xpCollection1.Criteria = co; }
CriteriaOperator重载了”==“操作符,当然也包括了>,<,>=,以及按位与、按位或运算符,代替逻辑与、逻辑或运算。
虽然重载了==运算符,但每次都要实例化OperandProperty,还是有点麻烦,因此推荐另外一种写法:
首先在Customer实体类中加入一个嵌套类Fields
new public class Fields { private Fields() { } public static OperandProperty Name { get => new OperandProperty("Name"); } public static OperandProperty Age { get => new OperandProperty("Age"); } }
然后就可以直接调用嵌套类的静态属性来做比较了。
private void btnFilter_Click(object sender, EventArgs e) { //OperandProperty op1 = new OperandProperty("Name"); //OperandProperty op2 = new OperandProperty("Age"); //CriteriaOperator co = op1 == "f" & op2 > 20; //xpCollection1.Criteria = co; CriteriaOperator co1 = Customer.Fields.Name == "f"; CriteriaOperator co2 = Customer.Fields.Age > 20; xpCollection1.Criteria = co1 & co2; }
最后,要实现过滤可以通过:
xpCollection1.Criteria 和 xpCollection1.Filter
不同的是Criteria是服务端过滤,而Filter是客户端过滤。
分类:
DevExpress
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗