0

次のコードがあります。

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<> を に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)

私を助けてください

4

1 に答える 1

5

クエリは返さ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 命名規則に従うように変更し、 1 つだけでなく複数の請求書を返すという点でより意味のあるものにしました。また、クエリを複数の行に広げると、読みやすくなることに注意しください。)

于 2013-03-03T17:11:55.130 に答える