asp.net mvc - how to combine 2 Linq predicates -C# -
i have next function
public virtual icollection<t> initdata<t>(system.data.entity.dbset<t> set, system.linq.expressions.expression<func<t, bool>> filter) t : cmodel<t> { var x = (from dc in set select dc); if (!this.db.valid) { system.linq.expressions.expression<func<t, bool>> active = => a.active; filter = (expression<func<t, bool>>)expression.lambda(expression.andalso(filter, active)); x.where(filter); } else { x.where(filter); } homecoming (icollection<t>)x.tolist(); } when ever seek combine 2 predicates andalso throws exception :
the binary operator andalso not defined types 'system.func`2[namespace.models.myclass,system.boolean]' , 'system.func`2[namespace.models.myclass,system.boolean]'. how can combine these 2 conditions?
i think making life hard yourself. utilize extension method multiple times this:
public virtual icollection<t> initdata<t>(system.data.entity.dbset<t> set, system.linq.expressions.expression<func<t, bool>> filter) t : cmodel<t> { var x = (from dc in set select dc); x = set.where(filter); if (!this.db.valid) { x = x.where(a => a.active); } homecoming x.tolist(); } note in code used x.where(filter); useless because not mutate x, result discarded. maintain result need assign something: x = x.where(filter);. same thought when working strings.
second answer:
there built in delegate called predicate<t>. think might have more luck using type func<t, bool>, though both have same meaning. think compiler error trying say.
asp.net-mvc linq linq-to-sql
No comments:
Post a Comment