Динамическое предложение where с использованием Linq to SQL

Я пытаюсь сделать фильтр "где" на не выбранных элементах и ​​не во 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();

Я хочу позже отфильтровать переменную UserQuery по любому свойству, принадлежащему объекту CONSULT или объекту USER

например, отфильтровать позже по:

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)

Как я могу это сделать?


person kalu    schedule 27.07.2012    source источник
comment
по сути, то, что вы пытаетесь сделать, это построить критерии, не требует библиотеки динамических запросов Linq, все, что вам нужно сделать, это создать квалификатор выражения --> stackoverflow.com/questions/10497801/   -  person kalki    schedule 27.07.2012


Ответы (2)


Вам поможет библиотека динамических запросов LINQ.

обратитесь к http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

person Community    schedule 27.07.2012
comment
Я не нашел полезного, пожалуйста, помогите - person kalu; 27.07.2012

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 со многими больше примеров

person kalki    schedule 27.07.2012