如何为CriteriaOperator过滤对象转换为lambda表达式,即:linq to xpo的动态where语句
How to convert the CriteriaOperator to a lambda expression, so, the latter expression can be used in the IQueryable source
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using DevExpress.Xpo;
- using DevExpress.Data.Filtering;
- using System.Collections;
- using DevExpress.XtraEditors;
- using DevExpress.Data.Linq.Helpers;
- using DevExpress.XtraEditors.Filtering;
- using DevExpress.XtraEditors.Repository;
- using DevExpress.Data.Filtering.Helpers;
- using DevExpress.Data.Linq;
- namespace DXSample
- {
- public partial class Form1 : XtraForm
- {
- public Form1()
- {
- InitializeComponent();
- }
- IQueryable<Products> source;
- private void OnLoad(object sender, EventArgs e)
- {
- var products = new XPQuery<Products>(unitOfWork1);
- source = from product in products
- where product.Quantity >=
- select product;
- gridControl1.DataSource = source.ToList();
- CreateFilterColumns();
- }
- private void CreateFilterColumns()
- {
- filterControl1.FilterColumns.Add(new UnboundFilterColumn("ProductID", "ProductID", typeof(int),
- new RepositoryItemSpinEdit(), FilterColumnClauseClass.Generic));
- filterControl1.FilterColumns.Add(new UnboundFilterColumn("Quantity", "Quantity", typeof(int),
- new RepositoryItemSpinEdit(), FilterColumnClauseClass.Generic));
- filterControl1.FilterColumns.Add(new UnboundFilterColumn("Price", "Price", typeof(decimal),
- new RepositoryItemSpinEdit(), FilterColumnClauseClass.Generic));
- filterControl1.FilterColumns.Add(new UnboundFilterColumn("ProductName", "ProductName", typeof(string),
- new RepositoryItemTextEdit(), FilterColumnClauseClass.String));
- filterControl1.FilterColumns.Add(new UnboundFilterColumn("Discontinued", "Discontinued", typeof(bool),
- new RepositoryItemCheckEdit(), FilterColumnClauseClass.Generic));
- }
- private void OnUpdateFilter(object sender, EventArgs e)
- {
- gridControl1.BeginUpdate();
- try
- {
- CriteriaToExpressionConverter converter = new CriteriaToExpressionConverter();
- IQueryable<Products> filteredData = source.AppendWhere(converter, filterControl1.FilterCriteria) as IQueryable<Products>;
- gridControl1.DataSource = null;
- gridControl1.DataSource = filteredData.ToList();
- }
- finally
- {
- gridControl1.EndUpdate();
- }
- }
- private void OnSaveButtonClick(object sender, EventArgs e)
- {
- try
- {
- unitOfWork1.CommitChanges();
- }
- catch (Exception exc){
- MessageBox.Show(exc.ToString());
- unitOfWork1.ReloadChangedObjects();
- }
- }
- }
- }
- using System;
- using DevExpress.Xpo;
- namespace DXSample
- {
- public class Products : XPLiteObject
- {
- int fProductID;
- [Key(true)]
- public int ProductID
- {
- get { return fProductID; }
- set { SetPropertyValue<int>("ProductID", ref fProductID, value); }
- }
- int fQuantity;
- public int Quantity
- {
- get { return fQuantity; }
- set { SetPropertyValue<int>("Quantity", ref fQuantity, value); }
- }
- decimal fPrice;
- public decimal Price
- {
- get { return fPrice; }
- set { SetPropertyValue<decimal>("Price", ref fPrice, value); }
- }
- string fProductName;
- public string ProductName
- {
- get { return fProductName; }
- set { SetPropertyValue<string>("ProductName", ref fProductName, value); }
- }
- bool fDiscontinued;
- public bool Discontinued
- {
- get { return fDiscontinued; }
- set { SetPropertyValue<bool>("Discontinued", ref fDiscontinued, value); }
- }
- public Products(Session session) : base(session) { }
- public Products() : base(Session.DefaultSession) { }
- public override void AfterConstruction() { base.AfterConstruction(); }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows.Forms;
- using DevExpress.Xpo;
- using DevExpress.Xpo.DB;
- using DevExpress.Skins;
- namespace DXSample
- {
- static class Program
- {
- /// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- static void Main()
- {
- string connectionString = AccessConnectionProvider.GetConnectionString("MyDB.mdb");
- XpoDefault.DataLayer = XpoDefault.GetDataLayer(connectionString, AutoCreateOption.DatabaseAndSchema);
- XpoDefault.Session = null;
- CreateData();
- SkinManager.EnableFormSkins();
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Form1());
- }
- static void CreateData()
- {
- using (UnitOfWork uow = new UnitOfWork())
- {
- if (uow.FindObject<Products>(null) == null)
- {
- Products product = new Products(uow);
- product.Discontinued = false;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Orange";
- product = new Products(uow);
- product.Discontinued = true;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Apple";
- product = new Products(uow);
- product.Discontinued = false;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Banana";
- product = new Products(uow);
- product.Discontinued = true;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Grape";
- product = new Products(uow);
- product.Discontinued = false;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Garnet";
- product = new Products(uow);
- product.Discontinued = true;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Mandarin";
- product = new Products(uow);
- product.Discontinued = false;
- product.Price = ;
- product.Quantity = ;
- product.ProductName = "Kiwi";
- uow.CommitChanges();
- }
- }
- }
- }
- }
示例地址:https://www.devexpress.com/Support/Center/Example/Details/E2596
如何为CriteriaOperator过滤对象转换为lambda表达式,即:linq to xpo的动态where语句的更多相关文章
- C# Lambda表达式和linq表达式 之 匿名对象查询接收
很多小伙伴都用过Lambda表达式和linq表达式,用起来也得心应手,但是有的小伙伴 对匿名对象的查询与接收比较迷茫,(没有定义相应的实体),怎么在where()里面进行 条件筛选呢?常规用法我就不说 ...
- C#从委托、lambda表达式到linq总结
前言 本文总结学习C#必须知道的基础知识,委托.监视者模式.常用lambda表达式.linq查询,自定义扩展方法,他们之间有什么关系呢?匿名委托是如何演变成lambda表达式,lambda再如何导出l ...
- entity framework 新手入门篇(1.5)-lambda表达式与linq
在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以la ...
- c# in deep 之Lambda表达式于LINQ表达式结合后令人惊叹的简洁(2)
当Lambda表达式和LINQ一起使用时,我们会发现原本冗长的代码会变得如此简单.比如我们要打印0-10之间的奇数,让其从高到低排列并求其平方根,现在只用一行代码即可完成其集合的生成,直接上代码: v ...
- C# 匿名委托、匿名方法、匿名对象、Lambda表达式
一.匿名类型可通过使用 new 运算符和对象初始值创建匿名类型.示例:var v = new { Name = "Micro", Message = "Hello&quo ...
- C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...
- C++ 理解函数对象与lambda表达式
参考<21天学通C++>第21与第22章节,对函数对象进行介绍,同时通过lambda表达式这一匿名函数对象的简洁方式加深对函数对象的理解.本篇博文的主要内容是: (1) 函数对象的概念: ...
- C# 基础知识系列- 6 Lambda表达式和Linq简单介绍
前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...
- .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)
1.自动属性 Auto-Implemented Properties 2.隐式类型 var var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...
随机推荐
- 阿里 otter搭建过程整理
1 环境说明: 本机ip 192.168.8.3 虚拟机1 ip 192.168.8.5 虚拟机2 ip 192.168.8.6 虚拟机采取桥接模式 虚拟机系统为CentOS 2.6.32-279.e ...
- IOS关于不同字体和不同颜色的选择
在项目中,用到一个功能,就是不同文字和不同颜色字体选择, 界面如下:,效果如下: 这个功能主要用到了textview的几个代理办法,其中一个重要的问题就是,在英文下和英文下的不同判断方式,以及是否有追 ...
- Sublime Text3快捷键以及常用插件
工若善其事,必先利其器.做为一个web前端开发人员,必须有一个得心应手的编码工具,本人推荐Sublime Text3和WebStorm,但WebStorm太过智能和耗性能了对初学者来说弊大于利,所以我 ...
- 论文阅读(Xiang Bai——【TIP2014】A Unified Framework for Multi-Oriented Text Detection and Recognition)
Xiang Bai--[TIP2014]A Unified Framework for Multi-Oriented Text Detection and Recognition 目录 作者和相关链接 ...
- 超简单的JNI——NDK开发教程
不好意思各位,我按照网上一些教程进行JNI开发,折腾了半天也没成功,最后自己瞎搞搞定了,其实超简单的,网上的教程应该过时了,最新版的AS就包含了NDK编译的功能,完全不用手动javah,各种包名路径的 ...
- GUI生成exe文件
gui如何生成exe文件: 已经有gui.m和gui.fig文件 1 安装编译器.已经安装好了vs10的. 2 设置编译器.在matlab命令行输入mex -setup,选择安装的c编译器 3 调用编 ...
- CEGUI环境配置
由于最近项目需要CEGUI做界面,于是我去下载了CEGUI源码,但是却不知道怎么搭建.网上的教程都不是很详细,不能让我们这种新手理解,经过几天折腾,终于弄好了,特此记录下来. 1.下载官网CEGUI源 ...
- linux 使用/proc文件系统 实现用户空间与内核模块之间通信
项目中可能会用到用户态和内核模块之间进行通信的功能.想到linux系统本身很多通信都是通过/proc文件系统来的,比如修改网络中连接跟踪表连接数限制/proc/sys/net/netfilter/nf ...
- Oracle表结构修改触发视图无法正常使用问题
一.问题描述 当对视图使用的基表进行表结构修改后,会触发视图的无效以及编译出错问题,必须重建视图解决. 二.问题再现 1.Oracle10g环境 1.1 创建视图测试用两张基表:TestTable和T ...
- js 中关键字 this的用法
<1> js中this 的用法? (key:函数是由调用的,四种情况标红可知) (http://www.ruanyifeng.com/blog/2010/04/using_this_k ...