问题描述
- 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这种怪异的写法了。
解决方案三:
效率上没有差别,从最终生成的SQL语句上就看的出来了
http://blog.csdn.net/q107770540/article/details/5724013
解决方案四:
恩,我想问下 如果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);
这个效率有差别么。
时间: 2025-01-31 01:56:47