不能隐式转换类型'System.Linq.IQueryable<>存在显式转换(您是否缺少强制转换?)

本文关键字:转换 是否 显式转换 存在 类型 不能 IQueryable Linq System | 更新日期: 2023-09-27 18:01:52

我有以下代码:

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;
}

我得到了这个错误:

不能隐式转换类型'System.Linq.IQueryable<>为。存在显式转换(您是否缺少强制类型转换?)

请帮帮我

不能隐式转换类型'System.Linq.IQueryable<>存在显式转换(您是否缺少强制转换?)

您的查询返回IQueryable<THanhToan>,但您试图返回List<ThanhToan>。没有隐式转换可用(根据错误信息),但您可以使用ToList扩展方法来创建一个列表:

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();
}

(我已经改变了你的方法名,以遵循。net命名约定,并使它返回多个发票更有意义,而不仅仅是一个。)还要注意,将查询扩展到多行使更容易阅读。)

相关文章: