无法将类型 'System.Collections.Generic.IEnumerable<AnonymousType#1>' 隐式转换为'System.Linq.IQueryabl



我想定义一个包含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"。集合。通用的IEnumerable"到"系统。林克。IQueryable

在CCD_ 1线上。

问题出在哪里?我该如何解决这个问题?请帮忙。

您的问题是对AsEnumerable的调用-它将IQueryable转换为IEnumerable;因此,不能将其作为IQueryable返回。

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

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

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

相关内容

  • 没有找到相关文章

最新更新