私はListを持っており、このExpressionリストで定義された新しいオブジェクトを選択するExpressionのリストを定義できるようにしたいと考えています。List <>からExpression arrayによって新しいオブジェクトを作成する方法
しかし、私は知らない、式リストをdata.Select()に渡す方法。このような いろいろ書い:data.Select(SelectExpressionList)
public class Test
{
public void Process()
{
var foo = new Foo<User>();
foo.data.Add(new User() { id = 1, LastName = "User1", Other = "A" });
foo.data.Add(new User() { id = 2, LastName = "User2", Other = "B" });
foo.data.Add(new User() { id = 3, LastName = "User3", Other = "C" });
foo.AddExpression(u => u.id);
foo.AddExpression(u => u.LastName);
var result = foo.CreateNewByExpression(); // I want List<> object {id, LastName}
}
}
public class User
{
public int id { get; set; }
public string LastName { get; set; }
public string Other { get; set; }
}
public class Foo<T>
{
public List<T> data = new List<T>();
public List<Expression> SelectExpressionsList = new List<Expression>();
public List<object> CreateNewByExpression()
{
return data.Select(....); // I want List<> object defined by SelectExpressions
}
public void AddExpression<TKey>(Expression<Func<T, TKey>> exp)
{
SelectExpressionsList.Add(exp);
}
}
私はachiveたいものを希望、その明確な、。おかげさまで
編集: 匿名タイプである必要はありません。私は "選択された"プロパティのみを持つリストがほしい...
これはできません。匿名オブジェクトのクラスはコンパイラによって作成されます。コンパイラが完了した後は作成できません。さらに、匿名オブジェクトは、その構造を知っているコードなしでは役に立たないことが判明しました。 – dasblinkenlight
あなたのお返事ありがとうございます。それはAnonymouタイプである必要はありません。私はonyの "選択された"特性を持っているオブジェクトを使っています。 – Celer