首页 新闻 会员 周边

有可能实现吗?C#中将2个IQuerable中的Where查询合并

0
悬赏园豆:50 [待解决问题]

方法A:

public IQueryable<User> GetByEmail(string email)
{
    return _users.Where(u => u.Email == email);
}

方法B:

public IQueryable<User> GetByLoginName(string loginName)
{
    return _users.Where(u => u.LoginName == loginName);
}

需要通过调用这2个方法,实现这样的效果:

return _users.Where(u => u.Email == email).Where(u => u.LoginName == loginName);
C#
问题补充:

解决这个问题的难点在于如何从 IQueryable 的 Expression 中提取出 Expression<Func<T, bool>> 

对于 Where 查询,IQueryable.Expression 的类型是 MethodCallExpression

dudu的主页 dudu | 高人七级 | 园豆:30979
提问于:2017-01-14 15:22
< >
分享
所有回答(4)
0

IQueryable有个Expression的property的属性。

Daniel Cai | 园豆:10424 (专家六级) | 2017-01-14 16:12
2

http://stackoverflow.com/questions/457316/combining-two-expressions-expressionfunct-bool

jello chen | 园豆:7306 (大侠五级) | 2017-01-14 23:34
0

写个IQueryable的拓展方法。两个方法合成一个.

 public static IQueryable<TSource> HasWhere<TSource>(this IQueryable<TSource> query, string target, Expression<Func<TSource, bool>> predicate)
        {
            if (!String.IsNullOrEmpty(target))
            {
                return query.Where(predicate);
            }
            return query;
        }

 

 

 

the boy、图样图森破 | 园豆:112 (初学一级) | 2017-01-24 11:00
0

将两个Iqueryable通过linq语句Join查询呢

sammy123 | 园豆:174 (初学一级) | 2020-05-20 12:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册