当前位置:编程学习 > C#/ASP.NET >>

根据实体属性生成 LINQ的WHERE表达式

我有一个实体,假设是这样的

    [EntityAttribute(And=true,Equals=true)]
    public int ID { get; set; }

    [EntityAttribute(And = true, Contains = true)]
    public string Name { get; set; }

    [EntityAttribute(And = true, Equals = true)]
    public string NameEquals { get; set; }

    [EntityAttribute(Range = true, RangeName = "MoneyEnd")]
    public double MoneyStart { get; set; }
    public double MoneyEnd { get; set; }

    [EntityAttribute(Or = true, Contains = true)]
    public string OrName { get; set; }

    [EntityAttribute(Range = true, RangeName = "End")]
    public DateTime Start { get; set; }
    public DateTime End { get; set; }

属性特性

   /// <summary>
    /// 运算符方式 与
    /// </summary>
    public bool And { get; set; }
    /// <summary>
    /// 运算符方式 或
    /// </summary>
    public bool Or { get; set; }
    /// <summary>
    /// 数据比较方式 完全相等 类似于=
    /// </summary>
    public bool Equals { get; set; }
    /// <summary>
    /// 数据比较方式 出现过 类似于模糊查询 like
    /// </summary>
    public bool Contains { get; set; }
    /// <summary>
    /// 数据比较方式 大于等于
    /// </summary>
    public bool Max { get; set; }
    /// <summary>
    /// 数据比较方式 小于等于
    /// </summary>
    public bool Min { get; set; }
    /// <summary>
    /// 数据比较方式 范围比较 类似于字段值是 50 到 100之间的数据,也可以是时间
    /// </summary>
    public bool Range { get; set; }
    /// <summary>
    /// 数据比较方式 另一字段名称
    /// </summary>
    public string RangeName { get; set; }



我想弄成个共用的,用反射获取到实体的属性与值,再生成一个动态WHERE的表达式么?或者LINQ TO SQL --------------------编程问答-------------------- 可以,其实不必用属性用Expression<funt<T,U>>,然后在后面解析一下你传递过来的东西即可,具体做法可以看这里

http://www.cnblogs.com/coolcode/archive/2011/06/08/IQueryBuilder_v2.html

提供源码下载 --------------------编程问答-------------------- http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx --------------------编程问答--------------------
引用 2 楼 q107770540 的回复:
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

学习一下,可以借鉴这个 --------------------编程问答-------------------- 添加个WCF数据服务
OData使搜索,排序,分页变得无比简单
http://www.odata.org/developers/protocols/uri-conventions --------------------编程问答-------------------- Expression<Fun<T,U>> 和 dynamic-linq 都可以

http://blog.csdn.net/sandy945/article/details/5735326 --------------------编程问答-------------------- 自己顶一下,能根据实体里的成员是否为NULL,来构建表达式么?
--------------------编程问答-------------------- 自己可以用2.0做个简单的表达式
就可以实现简单的sql查询了 --------------------编程问答-------------------- http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx 
http://blog.csdn.net/sandy945/article/details/5735326 
猫哥和阿非推荐的例子   对你有帮助的
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,