Cómo convertir la Lista de<dynamic> Lista<OurClass> en c#

Puedo crear una lista dinámica en tiempo de ejecución y después de la ejecución necesito asignar la lista para mi clase de propiedades

List<tblchargemaster> charge = new List<tblchargemaster>();

charge = (List<tblchargemaster>) ObjDB.SelectQuery("tblchargemaster");

tblchargemaster es el tipo de clase y SelectQuery función devuelve List<dynamic>. ¿Cómo puedo convertir esta dinámica de la lista a una lista con mi tipo de clase?

     public List<dynamic> SelectQuert(string TableName)
    {
        Conn.Open();

        DataTable dt = new DataTable("map");

        string Query = "Select * from " + TableName;            
        MySqlDataAdapter dr = new MySqlDataAdapter(Query, Conn);
        dr.Fill(dt);

        List<dynamic> dynamicDt = dt.ToDynamic();

        Conn.Close();

        return dynamicDt;
    }

Y Clase Genérica es

    public static class DataTableExtensions
{
    public static List<dynamic> ToDynamic(this DataTable dt)
    {
        var dynamicDt = new List<dynamic>();
        foreach (DataRow row in dt.Rows)
        {
            dynamic dyn = new ExpandoObject();
            foreach (DataColumn column in dt.Columns)
            {
                var dic = (IDictionary<string, object>)dyn;
                dic[column.ColumnName] = row[column];
                dynamicDt.Add(dyn);
            }
        }
        return dynamicDt;
    }
}
  • posibles duplicados de hay una manera de convertir una dinámica o un objeto anónimo a un establecimiento inflexible de tipos, declarada objeto?
  • como se mencionó en la discusión a mi respuesta esto se reduce a cómo convertir una dinámica para un tblchargemaster. Una vez que usted puede hacer para que un objeto también se puede hacer de muchos objetos.
  • puedo actualizar mi pregunta amigo por favor me ayude. . .
  • He publicado un enlace a la Stackoverflow Q&a, que responde a su pregunta. ¿La has leído?
  • Sí, Pero que es js serialización cómo su ayuda me
  • por favor me ayudan amigos
  • ‘Tipo De Deportes.Modelos.tblchargemaster’ no es compatible para la deserialización de una matriz. este error se vienen
  • Usted no se ha leído mi vínculo con suficiente cuidado.

InformationsquelleAutor Dinesh | 2014-05-13

2 Kommentare

  1. 7

    Editado, ya que la conversión explícita de dinámico a un tipo fuerte no es compatible.

    var charge = ObjDB.SelectQuert("tblchargemaster").Cast<tblchargemaster>();

    se convierte en:

    var charge = ObjDB.SelectQuert("tblchargemaster").Select(CastDynamicTo<tblchargemaster>)

    mientras que CastDynamicTo<tblchargemaster> se implementa con la ayuda de la Hay una manera de convertir una dinámica o un objeto anónimo a un establecimiento inflexible de tipos, declarada objeto?

    • No se puede convertir implícitamente el tipo ‘System.Las colecciones.Genérica.IEnumerable<Deportes.Modelos.tblchargemaster>’ a ‘del Sistema.Las colecciones.Genérica.Lista de<Deportes.Modelos.tblchargemaster>’. Una conversión explícita existe (¿falta una pieza?)
    • Llame al método ToList() en la final
    • parece que no copia de mi código 1:1. Si realmente quieres escribir explícitamente su charge como List<..> deberá anexar un .ToList() después de .Cast<...>
    • Puede usted decir eso?
    • De nuevo estoy recibiendo mensaje de error (no se puede convertir un objeto de tipo ‘System.Dinámica.ExpandoObject’ a ‘tipo de Deportes.Modelos.tblchargemaster’.)
    • Que nos lleva a la cuestión de cómo convertir una dinámica para un tipo fuerte. Yo estaba asumiendo que una conversión explícita que hacer el truco pero no lo hace. Sin embargo, esta pregunta ha sido respondida ya: stackoverflow.com/questions/17101190/…
    • puedo actualizar mi pregunta amigo por favor me ayude. . .
    • ‘Tipo De Deportes.Modelos.tblchargemaster’ no es compatible para la deserialización de una matriz de Este error está por venir.

  2. 1

    Uso Cast<tblchargemaster>() método:

    List<tblchargemaster> charge = new List<tblchargemaster>();
    
    charge = charge.AddRange(
       ObjDB.SelectQuert("tblchargemaster").Cast<tblchargemaster>());
    • No se puede convertir implícitamente tipo de «vacío» a » del Sistema.Las colecciones.Genérica.Lista de<Deportes.Modelos.tblchargemaster> error como este

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea