Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Convert Datatable To List</p> <pre><code> #region "Convert DataTable to List&lt;dynamic&gt;" public List&lt;dynamic&gt; ToDynamicList(DataTable dt) { List&lt;string&gt; cols = (dt.Columns.Cast&lt;DataColumn&gt;()).Select(column =&gt; column.ColumnName).ToList(); return ToDynamicList(ToDictionary(dt), getNewObject(cols)); } public List&lt;Dictionary&lt;string, object&gt;&gt; ToDictionary(DataTable dt) { var columns = dt.Columns.Cast&lt;DataColumn&gt;(); var Temp = dt.AsEnumerable().Select(dataRow =&gt; columns.Select(column =&gt; new { Column = column.ColumnName, Value = dataRow[column] }) .ToDictionary(data =&gt; data.Column, data =&gt; data.Value)).ToList(); return Temp.ToList(); } public List&lt;dynamic&gt; ToDynamicList(List&lt;Dictionary&lt;string, object&gt;&gt; list, Type TypeObj) { dynamic temp = new List&lt;dynamic&gt;(); foreach (Dictionary&lt;string, object&gt; step in list) { object Obj = Activator.CreateInstance(TypeObj); PropertyInfo[] properties = Obj.GetType().GetProperties(); Dictionary&lt;string, object&gt; DictList = (Dictionary&lt;string, object&gt;)step; foreach (KeyValuePair&lt;string, object&gt; keyValuePair in DictList) { foreach (PropertyInfo property in properties) { if (property.Name == keyValuePair.Key) { property.SetValue(Obj, keyValuePair.Value.ToString(), null); break; } } } temp.Add(Obj); } return temp; } private Type getNewObject(List&lt;string&gt; list) { AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "tmpAssembly"; AssemblyBuilder assemblyBuilder = Thread.GetDomain().DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); ModuleBuilder module = assemblyBuilder.DefineDynamicModule("tmpModule"); TypeBuilder typeBuilder = module.DefineType("WebgridRowCellCollection", TypeAttributes.Public); foreach (string step in list) { string propertyName = step; FieldBuilder field = typeBuilder.DefineField(propertyName, typeof(string), FieldAttributes.Public); PropertyBuilder property = typeBuilder.DefineProperty(propertyName, System.Reflection.PropertyAttributes.None, typeof(string), new Type[] { typeof(string) }); MethodAttributes GetSetAttr = MethodAttributes.Public | MethodAttributes.HideBySig; MethodBuilder currGetPropMthdBldr = typeBuilder.DefineMethod("get_value", GetSetAttr, typeof(string), Type.EmptyTypes); ILGenerator currGetIL = currGetPropMthdBldr.GetILGenerator(); currGetIL.Emit(OpCodes.Ldarg_0); currGetIL.Emit(OpCodes.Ldfld, field); currGetIL.Emit(OpCodes.Ret); MethodBuilder currSetPropMthdBldr = typeBuilder.DefineMethod("set_value", GetSetAttr, null, new Type[] { typeof(string) }); ILGenerator currSetIL = currSetPropMthdBldr.GetILGenerator(); currSetIL.Emit(OpCodes.Ldarg_0); currSetIL.Emit(OpCodes.Ldarg_1); currSetIL.Emit(OpCodes.Stfld, field); currSetIL.Emit(OpCodes.Ret); property.SetGetMethod(currGetPropMthdBldr); property.SetSetMethod(currSetPropMthdBldr); } Type obj = typeBuilder.CreateType(); return obj; } #endregion </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload