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语句的更多相关文章

  1. C# Lambda表达式和linq表达式 之 匿名对象查询接收

    很多小伙伴都用过Lambda表达式和linq表达式,用起来也得心应手,但是有的小伙伴 对匿名对象的查询与接收比较迷茫,(没有定义相应的实体),怎么在where()里面进行 条件筛选呢?常规用法我就不说 ...

  2. C#从委托、lambda表达式到linq总结

    前言 本文总结学习C#必须知道的基础知识,委托.监视者模式.常用lambda表达式.linq查询,自定义扩展方法,他们之间有什么关系呢?匿名委托是如何演变成lambda表达式,lambda再如何导出l ...

  3. entity framework 新手入门篇(1.5)-lambda表达式与linq

    在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以la ...

  4. c# in deep 之Lambda表达式于LINQ表达式结合后令人惊叹的简洁(2)

    当Lambda表达式和LINQ一起使用时,我们会发现原本冗长的代码会变得如此简单.比如我们要打印0-10之间的奇数,让其从高到低排列并求其平方根,现在只用一行代码即可完成其集合的生成,直接上代码: v ...

  5. C# 匿名委托、匿名方法、匿名对象、Lambda表达式

    一.匿名类型可通过使用 new 运算符和对象初始值创建匿名类型.示例:var v = new { Name = "Micro", Message = "Hello&quo ...

  6. C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

    1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...

  7. C++ 理解函数对象与lambda表达式

    参考<21天学通C++>第21与第22章节,对函数对象进行介绍,同时通过lambda表达式这一匿名函数对象的简洁方式加深对函数对象的理解.本篇博文的主要内容是: (1) 函数对象的概念: ...

  8. C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  9. .net学习之新语法学习(匿名类和匿名方法,扩展方法,系统内置委托,Lambda表达式和linq等)

    1.自动属性 Auto-Implemented Properties 2.隐式类型 var  var变量不能作为全局变量使用,因为不能在编译时确定类型 3.参数默认值 和 命名参数 4.对象初始化器 ...

随机推荐

  1. GPS部标监控平台的架构设计(七)-压力测试

    部标监控平台的压力测试是部标检测流程的最后一个检测环节,也是最难的,很多送检的企业平台都是卡壳在这一个环节.企业平台面临的问题如下: 1.对于压力测试的具体指标要求理解含糊,只知道是模拟一万辆车终端进 ...

  2. 创建 MIME 类型////////////zzz

    用 Apache 创建 MIME 类型 在 Apache 里, MIME 类型和文件扩展名之间的映射是被存放在配置文件 "apache根目录/conf/mime.types" 里的 ...

  3. Oracle数据库学习笔记

    创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...

  4. 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结

    引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. ...

  5. C语言回顾-结构体、枚举和文件

    1.构造类型 根据已经定义的一个或多个数据类型用构造的方法来定义. 分为:数组.结构体和共用体 2.结构体 struct 结构体名{ 成员列表: }; 1)结构体定义完成以后,计算机不会给结构体分配存 ...

  6. BigInteger和BigDecimal大数操作

    有时候可能会碰到需要计算非常大的数,比如7777777777777777777777777*3333333333333333333333333333,这样的计算需要显然不能用之前的方式来进行.我们不能 ...

  7. Window Azure ServiceBus Messaging消息队列技术系列2-编程SDK入门

    各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览.接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来. 本 ...

  8. python之haproxy配置文件操作(第三天)

    作业: 对haproxy配置文件进行操作 要求: 对haproxy配置文件中backend下的server实现增删改查的功能 一.这个程序有二个版本 1. python2.7版本见haproxy_py ...

  9. ASP.NET MVC异常处理

    ASP.NET MVC异常处理方案 如何保留异常前填写表单的数据 ASP.NET MVC中的统一化自定义异常处理 MVC过滤器详解 MVC过滤器使用案例:统一处理异常顺道精简代码 ASP.NET MV ...

  10. Dynamics AX 2012 R2 AIF 内部异常 output session was auto-closes

    今天调用AIF出现异常,异常信息如下 This chanel can no longer be used to send message as the output session was auto- ...