2013-03-03 53 views
0

我有以下代碼:不能將類型'System.Linq.IQueryable <>隱式轉換爲「。一個顯式轉換存在(是否缺少強制轉換?)

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 <>至 。一個顯式轉換存在(是否缺少強制轉換?)

請幫我

回答

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的命名規範和更有意義在它回報多個發票,而不僅僅是一個。還請注意如何傳播查詢多行使它更容易閱讀。)

相關問題