Linq to entities 多条件查询问题不知道有什么方法呢。

在用实体类建模时候,用Linq根据条件查询数据表,对于多个条件的查询,原来是需要什么条件就写一个方法,在开发途中发现条件确实是太多= =,

便想用几个公用方法来包含这些条件,也就是条件为空的时候不执行这个where罢了 比如:

        if (FromUserId != "" && ToUserId != "")
        {
            var query = from p in entities.T_Complaint
                        where
                        p.C_FromUserId.Equals(FromUserId)
                        && p.C_ToUserId.Equals(ToUserId)
                        select p;
        }.....

但是这两个条件就需要判断三次,这时候想用这个方法来解决

        var query = from p in entities.T_Complaint
                    where 
                    (FromUserId.Equals("")) ? true : p.C_FromUserId.Equals(FromUserId)
                    && (ToUserId.Equals("")) ? true : p.C_ToUserId.Equals(ToUserId)
                    select p;

可是Linq不支持条件啊,三元判断压根没用。不知道有什么方法呢。

 var query =  entities.T_Complaint;
if (FromUserId != "")
    query = query.Where(x => x.FromUserId == FromUserId);
if (ToUserId !="")
   query = query.Where(x => x.ToUserId == ToUserId);

lz以前用的是Java?恭喜弃暗投明。字符串比较不再需要什么equals这种怪异的写法了。

恩,我想问下 如果FromUserId 和ToUserId 都不为空的时候
query = query.Where(x => x.FromUserId == FromUserId&&x.ToUserId == ToUserId);
和query = query.Where(x => x.FromUserId == FromUserId);
query = query.Where(x => x.ToUserId == ToUserId);
这个效率有差别么。

效率上没有差别,从最终生成的SQL语句上就看的出来了

http://blog.csdn.net/q107770540/article/details/5724013