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

C# 使用字符串从类中获取字段,c#,linq,C#,Linq,这是我的简单课。然后我用这个类创建一个列表。我想使用变量字符串从此类获取字段,例如: public class Class{ public string First{get;set;} public string Second{get;set;} } var myRecord=newlist(); //加上。。。 字符串myString=“Second”; var somethinf=myRecord.Where(i=>i.myString==something) 有一种方法

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

public class Class{
    public string First{get;set;}
    public string Second{get;set;}
}
var myRecord=newlist();
//加上。。。
字符串myString=“Second”;
var somethinf=myRecord.Where(i=>i.myString==something)

有一种方法可以从
myString

获取此字段
Second
,您可以利用反射来完成此操作:

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

请看这个。

避免反射,一个更简单的方法可能是让类包装成字典:

 var somethinf = myRecord.Where(prop => ((string)typeof(Class).GetProperty("Second").GetValue(prop)) == something);
公共类
{
私人词典;
公共类()
{
_字典=新字典()
{
{“第一”,“Foo”},
{“第二”,“酒吧”}
};
}
公共字符串此[字符串键]
{
获取{return _dictionary[key];}
设置{u字典[key]=value;}
}
}
然后,您可以使用以下方法获取所需的数据:

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();
// ...
字符串变量string=“Second”,valueString=“Foo”;
var results=myRecords.Where(x=>x[variableString]==valueString);

这应该是可行的:
var somethinf=myRecord.Where(i=>((string)typeof(Class).GetProperty(“Second”).GetValue(i))==something)
var myRecords = new List<Class>();
// ...
string variableString = "Second", valueString = "Foo";
var results = myRecords.Where(x => x[variableString] == valueString);