反射表达式 怎么写

Joson.e8love 2017-01-14 05:07:06
有一个

User  mUser= new User{ID,Name}

CurrentID=?
List<User> LstT=.......

LstT.Where(XO => XO.ID == CurrentID).Equals(CurrentID);


那么封装一下 写成通用 反射时候

LstT.Where(X => X.GetType().GetProperties().。。。。。。。.Equals(CurrentID))



这样可以吗?要怎么写
...全文
1483 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Joson.e8love 2018-01-24
  • 打赏
  • 举报
回复
手抓宝 2017-06-30
  • 打赏
  • 举报
回复
可以用表达式树动态创建查询,以下代码参考:

public static class DynamicQuery
    {
        public static IEnumerable<T> Query<T>(this IEnumerable<T> listT, string fieldName, string value)
        {
            var param = Expression.Parameter(typeof(T), "i");
            Expression left = Expression.Property(param, typeof(T).GetProperty(fieldName));
            Expression right = Expression.Constant(value);
            Expression filter = Expression.Equal(left, right);
            Expression pred = Expression.Lambda(filter, param);
            Expression expr = Expression.Call(typeof(Queryable), "Where", new[] { typeof(T) }, Expression.Constant(listT.AsQueryable()), pred);
            return listT.AsQueryable().Provider.CreateQuery<T>(expr);
        }
    }
调用:

LstT.Query("ID",CurrentID);
  • 打赏
  • 举报
回复
滥用反射,在99%的初学者手里,都是害人的习惯。
threenewbee 2017-01-14
  • 打赏
  • 举报
回复
LstT.Where(X => X.GetType().GetProperties("属性").GetValue(x, null).Equals(CurrentID))
winner2050 2017-01-14
  • 打赏
  • 举报
回复
封装成通用的,慢慢就变成垃圾了。 封装了以后你打算通过外部传递,字段什么什么,值什么什么,然后就变成一个通用的查询。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧