私は次のコードを持っています:
public class C
{
public string Field {get; set;}
public string Data {get; set;}
}
var x = new C { Field = "F", Data = "Data 1" };
var y = new C { Field = "G", Data = "Data 2" };
そして、これを次のような匿名オブジェクトにキャストしたい:
var x_a = new { F = "Data 1" };
var y_a = new { G = "Data 2" };
プロパティ名 (F または G) はコンテンツであるため、動的に変更される可能性があることに注意してください。私は現在、これに System.Linq.Dynamic 'Select' メソッドを使用しています。
public static object CastToAnonymous(this C source)
{
var objects = new List<C>(new [] {source}).AsQueryable().Select("new (Data as " + source.Field + ")") as IEnumerable<object>;
return objects.First();
}
これを達成するためのより簡単な方法があるかどうか疑問に思っていますか?