Linq 查询“帮助”

Posted

技术标签:

【中文标题】Linq 查询“帮助”【英文标题】:Linq Query 'Help' 【发布时间】:2020-04-06 05:30:23 【问题描述】:

我有一个查询示例,如下所示。我有两个名为产品和类别的表。但我希望他按名称而不是 id 进行搜索。我进行了加入,但出现如下错误。我收到错误 "from p in context.Products" 的部分。我收到的错误是 Could not find an implementation of the query pattern for source type. 'Join' not found.

public List<Product> GetProductsByCategory(int categoryId)
    
        using (var context= new NorthwindContext())
        
            var query= from p in context.Products
                        join c in context.Categories on p.CategoryId equals c.CategoryId
                        select new
                        
                            ProductName= p.ProductName,
                            QuantityPerUnits = p.QuantityPerUnit,
                            UnitPrice = p.UnitPrice,
                            UnitInStock = p.UnitsInStock,
                            Category = c.CategoryName
                        ;

            return query.ToList();
                    
    

这个错误的原因是什么?我该如何解决。

【问题讨论】:

您为什么认为这是按类别获取产品?您尚未按传入的 categoryId 过滤数据。 因为我有两个表,我需要加入它们并按类别名称列出它们。 你完全忽略了我的意思。你有一个名为GetProductsByCategory 的方法,它接受一个名为categoryId 的参数,你什么也不做。您需要过滤传入的参数返回的结果。如果要按类别名称过滤,则需要按类别名称过滤。简单地进行连接不是一回事。 这能回答你的问题吗? Could not find an implementation of the query pattern 不完全是。发送参数“List GetProductsByCategory(int categoryId);”进入表单的类。它需要带有类别id的名称,而不是带有linq的查询.我正在尝试在页面上置顶架构。我怎样才能做到这一点或找到一个实例 【参考方案1】:

尝试为 linq 添加 using 语句:

using System.Linq;

【讨论】:

哦,谢谢。我完成了。现在“返回查询.ToList();”我遇到了错误。我正在研究分层架构。 错误是什么?在上面的代码中,“查询”是未定义的。也许你正在寻找 sorgu.ToList() dgwProduct.DataSource = _productService.GetProductsByCategory(Convert.ToInt32(cbxCategory.SelectedValue));我想用表单中的组合框搜索数据。“cbxCategory.SelectedValue”我发送一个形式的参数。 发送参数“List GetProductsByCategory(int categoryId);”进入表单的类。它需要带有类别id的名称,而不是带有linq的查询 这听起来像是另一个问题...用代码和错误发布另一个问题。

以上是关于Linq 查询“帮助”的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to DataSet 查询帮助

优化 LINQ 查询所需的帮助

在 Linq 查询上需要一些帮助,第三级包括 where

在使用 LINQ 的对面到内部联接查询方面需要帮助

LINQ 分组查询

linq 多条件查询