この問題の方向を見つけましたが、この問題に適用できるものが見つかりませんでした。他のプロパティにあるプロパティ値を動的に取得する方法ここで、文
さまざまなタイプのリストを、それらが保持する明示されたプロパティーでフィルタリングしたいと考えています。私はlinqを使ってListをTest.idで動的にフィルタリングすることができますが、MyClass.Nameを通してListをフィルタリングすることはできません。
私はこれらのクラスを持っています。
public class Test
{
public int Id { get; set; }
public MyClass myclass { get; set; }
}
public class MyClass
{
public string Name { get; set; }
}
これは私がやろうとしていることです。
static void Main(string[] args)
{
var source = new List<Test> {
new Test { Id = 1,myclass = new MyClass() { Name = "bob" } },
new Test { Id = 2,myclass= new MyClass() { Name = "joe" } } };
var x = myFilter(source,"Name", "bob");
Console.WriteLine(x.Count());
}
public static IEnumerable<T> myFilter<T>(List<T> source, string propertyName, string searchString)
{
// get the myclass property then the stated property(Name) value within it
searchString = searchString.ToLower();
return source.Where(s => (s.GetType().GetProperty("myclass")
.GetType().GetProperty(propertyName)
.GetValue(s.GetType().GetProperty("myclass"),null).ToString() ?? " ")
.ToLower().Contains(searchString));
}
私はTest.MyClass.Name =「ボブ」 のための1を期待していたカウントの戻り0は、このための解決策はありますか反射以外にそれを行うには良い方法はありますか?あなたが返さmyclass
財産のPropertyType
を使用する必要が
おかげ
はそんなにありがとう使用することができる代わりに、テストオブジェクトを返すようにしたい場合は、私はこの上で私の頭をしました。 – Brandon