我想定义一个包含Linq查询的函数,如下所示:
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 :(得分:1)
您的问题是致电AsEnumerable
- 它会将IQueryable
转换为IEnumerable
;因此,您不能将其作为IQueryable
返回。
如果我错了,请纠正我,但第二个选择似乎只是将行号添加到结果中。您可能希望与初始选择一起执行此操作,并跳过对AsEnumerable()
的调用。
可能的解决方案:重写查询以不使用AsEnumerable
(如果您想要返回IQueryable
),或者您可以将返回类型更改为IEnumerable
,如果这是更好的适合你的问题。
答案 1 :(得分:0)
返回查询;改变它以返回query.AsQueryable(); 并尝试更改方法签名以使用IQueryable而不是非通用的