Tengo el siguiente código:

private GolfManagementEntities db = new GolfManagementEntities();

    public class ThanhToan
    {
        public ThanhToan()
        { }
        public Double Total { get; set; }
        public DateTime date { get; set; }
    }

    public List<ThanhToan> listInvoice(DateTime tuNgay, DateTime denNgay)
    {

       List<ThanhToan> invoice= from i in db.Invoices 
                                where i.Date >= tuNgay && i.Date <= denNgay 
                                group i by i.Date into In 
                                select new ThanhToan { 
                                    date= Convert.ToDateTime(In.Key) , 
                                    Total = Convert.ToDouble(In.Sum(s => s.ExtendedCost))
                               };

       return invoice;

}

Y tengo este error :

No se puede convertir implícitamente el tipo ‘System.Linq.IQueryable < t > <>a . Una conversión explícita existe (¿falta una pieza?)

por favor me ayude

InformationsquelleAutor user2083943 | 2013-03-03

1 Comentario

  1. 5

    Su consulta devuelve IQueryable<THanhToan> pero usted está tratando de devolver un List<ThanhToan>. No hay una conversión implícita (según el mensaje de error), pero usted puede utilizar el ToList método de extensión para crear una lista:

    public List<ThanhToan> ListInvoices(DateTime tuNgay, DateTime denNgay)
    {
    
        var query = from i in db.Invoices 
                    where i.Date >= tuNgay && i.Date <= denNgay
                    group i by i.Date into g
                    select new ThanhToan {
                        date = Convert.ToDateTime(g.Key), 
                        Total = Convert.ToDouble(g.Sum(s => s.ExtendedCost))
                    };
        return query.ToList();
    }

    (He cambiado el nombre del método a seguir .NET convenciones de nomenclatura y tener más sentido en términos de que regresa múltiples facturas, no sólo uno. Tenga en cuenta también cómo la difusión de la consulta a través de varias líneas hace mucho más fácil de leer.)

Dejar respuesta

Please enter your comment!
Please enter your name here