如何将x.Demographic.AgeRange
替换为任何其他字段?
例如
var field_to_check = "Country";
x.Demographic.ReflectedProperty(field_to_check)=="USA"
var field_to_check = "AgeRnage";
x.Demographic.ReflectedProperty(field_to_check)=="20-30"
我尝试了一个被反射的财产。但是不能成功。
Favourability = db.Questions
.OrderByDescending(x => x.Responces.Count(y => y.Responseval == Constants.options.Agree || y.Responseval == Constants.options.Tend_to_Agree))
.Select(z => new
{
z.QuestionTitle,
Count = z.Responces.Where(x =>
x.Demographic.AgeRange == repval &&
(x.Responseval == Constants.options.Agree || x.Responseval == Constants.options.Tend_to_Agree)
)
.Count()
})
.Select(z => new
{
z.QuestionTitle,
z.Count,
Perc = ((z.Count / totresponcecount) * 100)
}
)
.ToList();
这样我只能编写一个linq语句作为动态过滤而不是所有必需属性的switch语句。
答案 0 :(得分:0)
您可以从多个不同的表达式构建表达式树。使用LinqKit,然后写:
Expression<Func<Demography, string>> fieldSpec = d => d.AgeRange;
然后在你的经历中:
var exp = db.Questions.AsExpadable() ... fieldSpec.Expand(x.Demographic) == repval ...
现在您需要做的就是动态构建fieldSpec,这对您来说是一个练习:)