0

我想定义一个包含 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线。

问题是什么?我怎么解决这个问题?请帮忙。

4

2 回答 2

1

你的问题是调用 AsEnumerable- 它转换IQueryable为 a IEnumerable; 因此,您不能将其作为IQueryable.

如果我错了,请纠正我,但第二次选择似乎只将行号添加到结果中。您不妨与初始选择一起执行此操作,并跳过对AsEnumerable().

可能的解决方案:将查询重写为不使用AsEnumerable(如果您想要IQueryable返回),或者您可以将返回类型更改为IEnumerable,如果这更适合您的问题。

于 2013-02-10T09:41:28.847 回答
0

在返回查询;将其更改为返回 query.AsQueryable(); 并尝试更改方法签名以使用 IQueryable 而不是非泛型的

于 2013-02-10T16:01:18.007 回答