2013-02-10 106 views
0

我想定義一個函數含有LINQ查詢波紋管:無法隱式轉換類型 'System.Collections.Generic.IEnumerable <AnonymousType#1>' 到 'System.Linq.IQueryable'

public IQueryable GetBasket(Guid userId) 
{ 
    DabbaghanDataContext db = new DabbaghanDataContext(); 

    int rowNo = 0; 
    var query = (from c in db.Carts 
       join co in db.CartOrders on c.Id equals co.Cart_Id 
       join p in db.Products on co.Product_Id equals p.Id 
       where c.UserId == userId && c.Issued == false 
       select new 
       { 
        co.Quantity, 
        co.TotalPrice, 
        p.Code, 
        p.Price, 
        p.Thumbnail 
       }).AsEnumerable().Select(r => new 
       { 
        RowNumber = ++rowNo, 
        Quantity = r.Quantity, 
        TotalPrice = r.TotalPrice, 
        Code = r.Code, 
        Price = r.Price, 
        Thumbnail = r.Thumbnail 
       }); 

    return query; 
} 

我獲取錯誤

不能將類型'System.Collections.Generic.IEnumerable'隱式轉換爲'System.Linq.IQueryable'。

return query行。

什麼問題?我怎麼解決這個問題?請幫忙。

+0

爲什麼您需要將結果作爲IQueryable? – svick 2013-02-10 16:02:51

回答

1

您的問題是致電AsEnumerable - 它將IQueryable轉換爲IEnumerable;因此,您不能將其作爲IQueryable退回。

糾正我,如果我錯了,但第二個選擇似乎只將行號添加到結果。您最好還是想和初始選擇一起做,然後跳過AsEnumerable()

可能的解決方案:重寫查詢不使用AsEnumerable(如果你想要一個IQueryable返回),或者你可以改變返回類型爲IEnumerable,如果這是你的問題的一個更好的選擇。

0

返回查詢;改變那個返回query.AsQueryable(); 也嘗試更改方法簽名以使用IQueryable而不是非通用方法

相關問題