実行時にしかわからないデータセットから動的オブジェクトを作成して設定しようとしています。以下のコードでは、デザイン時にわからないいくつかの既知のフィールド(ID、プライマリデータ、DisplayOrder、IsActive)とユーザー定義フィールド(Phone Number)を持つ私のデータセットからIEnumerable結果を作成します。動的に構築される。以下のコードは動作しますが、ダイナミックフィールドの電話番号をハードコードしているためです。実行時に認識されたフィールドだけを処理するために、ラムダ式を動的に構築するにはどうすればよいですか。私は同等のものを求めています動的に作成されたラムダ式を使用して動的オブジェクトを作成して設定する方法
string fieldName = 'PhoneNumber = ';
string fieldSource = 'pd.tbList_DataText';
string expression = 'pd=>new { ID = pd.ID, PrimaryData=pd.PrimaryData';
expression += fieldName;
expression += FieldSource;
expression += '.Where(ld => ld.DataRowID == pd.ID && ld.ListColumnID == 1).Select(ld => ld.DataField).DefaultIfEmpty("").First()})';
var results = primaryData.Select(expression);
どうすればいいですか?ありがとう
// Get base Data
IEnumerable<tbList_Data> primaryData = await _tbList_DataRepository.GetAsync(ld => ld.ListID == listId && (ld.IsActive == includeInactive ? ld.IsActive : true));
// Get Final Results
var results = primaryData.Select(pd => new {
Id = pd.ID,
PrimaryData = pd.PrimaryData,
PhoneNumber = pd.tbList_DataText.Where(ld => ld.DataRowID == pd.ID && ld.ListColumnID == 1).Select(ld => ld.DataField).DefaultIfEmpty("").First()
});
iveはかなり長い間ダイナミックなプロパティを作成することに固執していましたが、私はこれまで可能だったことを試してみました。動的プロパティ部分への回答を楽しみにしています。 – Niklas
あなたは方法を見つけたとしましょう、あなたは 'results'をどのように使うつもりですか?あなたがそれを知っていなくても、 'PhoneNumber'にどうやってアクセスしますか? – vyrp
'System.Reflection' – Niklas