【问题标题】:"Group By" Clause not working“分组依据”条款不起作用
【发布时间】:2018-05-24 10:08:17
【问题描述】:

我把你放在上下文中,我们正在做一个使用 .NET 和 C# 的项目。 该项目链接到以下 SQL 数据库表。

在项目中,我们有一个 Search 字段,用户可以在其中键入,我们在数据库中使用 PROTOTYPE_CODE 字段过滤 textSearch

问题是,当用户键入时,例如,P30,软件会正确过滤它,它只显示带有“P30”的行作为代码:

现在当我们遇到问题时,我们希望将具有相同代码 (PROTOTYPE_CODE) 的行分组以获得相似的响应,而不是两行带有“P30”的行,而是获得一行带有“P30”但总和列上的编号。在这种情况下会是这样的:

问题是我们没有办法做到这一点,因为 VS 总是给我们带来错误,我将向您展示我们尝试过的不同方式。

 private IEnumerable<Prototypes> GetQuery()
        {
            return from search in prototypesBindingSource.DataSource as List<Prototypes>
                   where search.PROTOTYPE_CODE == (textSearch.Text) || search.PROTOTYPE_DESCR == (textSearch.Text) 
                   group search by search.PROTOTYPE_CODE into codeGroup
                   select search;
        }

在这种情况下,我们得到“当前上下文中不存在名称'search'”错误选择搜索。

我们也试过了

Group By codice = search.PROTOTYPE_CODE
Into Classes = Group, Count();

得到同样的错误。我们用不同的方式尝试了它,但从来没有得到预期的结果,因为我们真的被困在这里,所以找到正确的方法真是太棒了。谢谢!

【问题讨论】:

    标签: c# sql visual-studio group-by


    【解决方案1】:

    您的选择语句应如下所示:

    return from search in prototypesBindingSource.DataSource as List<Prototypes>
                       where search.PROTOTYPE_CODE == (textSearch.Text) || search.PROTOTYPE_DESCR == (textSearch.Text) 
                       group search by search.PROTOTYPE_CODE into codeGroup
                       select new {
        Code = codeGroup.Key,
        Count = codeGroup.Count()
    };
    

    【讨论】:

    • 它似乎工作得很好,但现在我在搜索时将字段变为空白,我想不是:dataGridView2.DataSource = query.ToList(); 我必须在那里添加更多信息?
    • 您需要确保网格视图中的列与查询返回的对象中的属性名称相匹配。这可能是空白字段的原因。
    • 嗯,名称是匹配的,但我想 DataPropertyName 上有一些东西,或者一些类似的选项必须更改,对吧?
    • 是的。 DataPropertyName 必须与查询返回的对象的属性名称匹配。
    猜你喜欢
    • 2015-12-06
    • 2015-03-29
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 2015-12-19
    • 2019-04-13
    • 1970-01-01
    • 2022-12-06
    相关资源
    最近更新 更多