使用字符串从类中获取字段

本文关键字:获取 字段 字符串 | 更新日期: 2023-09-27 18:21:51

public class Class{
    public string First{get;set;}
    public string Second{get;set;}
}

这是我的简单课程。然后我用这个类创建一个列表。我想使用我的变量字符串从此类中获取字段,例如:

var myRecord = new List<class>();
// add...
string myString = "Second";
var somethinf = myRecord.Where(i => i.myString == something)

有一种方法可以从myString中获取此字段Second

使用字符串从类中获取字段

您可以使用反射来完成此操作:

 var somethinf = myRecord.Where(prop => ((string)typeof(Class).GetProperty("Second").GetValue(prop)) == something);

请看这个小提琴。

为了避免反思,更简单的方法可能是让你的类包装一个字典:

public class Class
{
    private Dictionary<string, string> _dictionary;
    public Class()
    {
        _dictionary = new Dictionary<string, string>()
        {
            { "First", "Foo" },
            { "Second", "Bar" }
        };
    }
    public string this[string key]
    {
        get { return _dictionary[key]; }
        set { _dictionary[key] = value; }
    }
}

然后,您可以使用以下方法获取所需的数据:

var myRecords = new List<Class>();
// ...
string variableString = "Second", valueString = "Foo";
var results = myRecords.Where(x => x[variableString] == valueString);