我正在尝试对未选中的元素进行“where”过滤,而不是在ViewModel中
这就是我有:
var UserQuery = (from u in db.USER
join c in db.CONSULT on u.IdUser equals c.IdUser
select new UserSexViewModel { IdUser= c.IdUser, UserSex=u.Sex}).Distinct();
我想稍后使用属于对象CONSULT或对象USER
的任何属性过滤变量UserQuery
例如,稍后过滤:
CONSULT.TypeConsul,
CONSULT.DateCreation,
USER.Name,
USER.Age, and many more...
类似这样的事情:
UserQuery.Where(q=>q.CONSULT.TypeConsul==2) or UserQuery.Where(q=>q.USER.Age>16)
我怎么能这样做?
答案 0 :(得分:0)
LINQ动态查询库将为您提供帮助。
答案 1 :(得分:0)
var UserQuery = (from u in db.USER
join c in db.CONSULT on u.IdUser equals c.IdUser
select new UserSexViewModel { IdUser= c.IdUser, UserSex=u.Sex}).Distinct();
//伪代码
var specification = PredicateBuilder.True<Consult>();//default: build from this
specification = PredicateBuilder.And(specification, x => x.TypeConsult == 2);
var additionalCriterias = ...;
specification = additionalCriterias == null || additionalCriterias.Length == 0
? specification
: GetComposedSpecification(additionalCriterias);
var users = UserQuery.Where(specification).ToList()
predicateBuilder @ http://www.albahari.com/nutshell/predicatebuilder.aspx还有更多示例