我有Dictionary<string, string> Fields
,其中包含屬性名稱和屬性類型。IQueryable:在運行時動態地在linq中按名稱列出項目列
,我有一個查詢對象:IQueryable<T> query = GetQuery();
我使用Typebuilder建立一種動態的根據領域字典:
TypeBuilder builder = CreateTypeBuilder("MyDynamicAssembly", "MyModule", "MyType");
DataTable dt = new DataTable();
foreach (var s in Fields)
{
CreateAutoImplementedProperty(builder, s.Key, Type.GetType(s.Value));
dt.Columns.Add(s.Key, Type.GetType(s.Value));
}
Type resultType = builder.CreateType();
我想用linq
只投射到修改查詢對象他們的名字在Fields
字典中的列。喜歡的東西:
dynamic queryResult = query.Take(10).Select("Don't know how to project here???");
考慮列名:
string[] columnsNames = Fields.Select(x => x.Key).ToArray();
我怎樣才能做到這一點?
威爾擴展方法如果顯示一些示例數據並輸出,則更容易理解 –
由於您在運行時動態構建查詢,因此需要動態構建表達式樹。你可以用這個庫來幫忙:https://dynamiclinq.codeplex.com/documentation –
@Gilad Green我加了一些信息 – Karamafrooz