LINQ var作为where子句中的字段/列

时间:2017-12-07 17:01:56

标签: c# linq

在我的实体中,我有一些字段/列名为" aaa"," bbb"," ccc"等等。每个字段/列都可以包含值& #34; S"或" n"。

例如,如果我试试这个:

items = items.Where(p => p.aaa == "s");

它会将记录限制为aaa拥有" s" (测试,它的工作原理)。

我现在需要传递一个查询字符串,其中包含要搜索的字段的名称。

var qsintervencao = Request.QueryString["intervencao"];

if (qsintervencao == "" || qsintervencao == null || qsintervencao == "all") {
    <a>TEST: </a> qsintervencao not set or set to all
} else {
    items = items.Where(p => p.@qsintervencao == "s");
    <a>TEST: </a> @qsintervencao
}

QS有效,qsintervencao(和TEST)输出所选字段(aaa或bbb),但不返回任何记录。

有没有办法将var传递给where子句?

1 个答案:

答案 0 :(得分:0)

您可以使用 Reflection 动态确定相关属性;

  items = items.Where( p => p.GetType().GetProperties().FirstOrDefault(property => property.Name == qsintervencao).GetValue(p, null) == "s");