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