如何将用户输入字符串作为字段名称传递以访问对象中的字段?

wal*_*low 5 c# linq system.reflection

我正在使用linq从数据库中进行一些搜索.我有多个列名,如国家/地区,姓名,电话号码......

现在我创建了一个下拉列表,并将用户选择的数据作为参数"searchingField"传递给我的控制器方法.现在如果我接受"国家"的输入,我希望代码是

    entries = entries.Where(s => s.country.Contains(searchString));
Run Code Online (Sandbox Code Playgroud)

如果用户选择"名称"

    entries = entries.Where(s => s.name.Contains(searchString));
Run Code Online (Sandbox Code Playgroud)

请原谅我这个相当不合理的例子,因为我总是可以复制线条并制作案例,但我想知道是否有办法利用反射之类的东西将字符串转换为"代码"以访问字段?

    String searchedField = "name"

    ...

    entries = entries.Where(s => s.searchedField.Contains(searchString));
Run Code Online (Sandbox Code Playgroud)

这是我的第一个问题,谢谢!

Maa*_*ten 3

您可以使用动态 Linq

entries = entries
    .Where(
        string.Format(
            "{0} = '{1}'",
            searchedField,
            searchString
        )
    );
Run Code Online (Sandbox Code Playgroud)

注意:根据字段的类型,您是否需要添加引号。