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

时间:2015-11-13 11:16:34

标签: c# linq

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)

有一种方法可以从Second

获取此字段myString

2 个答案:

答案 0 :(得分:2)

你可以利用反射来实现这个目标:

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

请参阅此fiddle

答案 1 :(得分:0)

避免反射,一种更简单的方法可能就是让你的类包装一个Dictionary:

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);