问题标签 [igrouping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2237 浏览

linq - 在LINQ中分组后如何使用select获取嵌套值

http://img51.imageshack.us/i/linqquestion.png/

一切都在图片中。

我只想获得突出显示的值之一,例如size

图片中的代码:

0 投票
1 回答
459 浏览

sql - 使用 group by 子句时,如何在 Linq 查询中进行嵌套投影?

我正在尝试处理从 SQL 返回的分组数据。我正在编写的方法是为“案例状态概述”屏幕提供数据。它必须生成一个嵌套的 XML 文档。

现在,我可以用简单的方法做到这一点,但我正在尝试了解是否可以使用 linq“group by”语句,然后投影已经嵌套的数据。(最简单的方法就是从数据库中以表格方式拉回数据,然后通过它进行循环,形成 Xml 文档以供输出)

这是数据层次结构:

每个案例都有一个债务类型,每个债务类型都有一个客户。

这是检索数据的 SQL:

使用 Linqer 将其转换为:

现在,正如我所提到的,我可以停下来并使用 for 循环来创建 Xml 数据。但我正在尝试创建一个嵌套组 ( IGrouping<ClientName,IGrouping<DebtType,SummaryClass>>),然后以嵌套格式投影数据。

现在我们使用 LinqToXsd 为 out Xml 文档创建强类型包装器,但本质上这意味着 out 输出类型是:

现在我写了以下Linq:

它连接和分组数据库表,然后尝试将结果投影到 ClientSummary (类名不同,但这是因为上面是输出类的简化视图)。当我一直深入到 Cases 表时,我完全失败了,我发现我并不真正了解如何执行聚合函数。它们似乎只在IGrouping<K, T>s 上可用,看来我只是感到困惑。

我还需要确保摘要是在服务器端计算的,撤回数百万个案例会很糟糕。

有人可以帮我解决这个问题吗?这甚至可能吗?

问候,

詹姆士。

-------### 更新 1 ###-------

好的,今天又开始做这个了。我决定使用 Linq2SQL 提取 2D 数据包,然后使用 Linq2Objects 重新格式化它。

这是我开始的:

这会运行,但会为每个结果生成一个 Client/DebtType/Summary 集。因此,即使在这种情况下只有一个客户端,我最终还是有 1300 个客户端,全部相同。我将其简化为以下内容:

这产生了 1300 个客户。接下来我尝试了这个:

这会产生一个客户(万岁!)。除了我丢失了所有客户信息(嘘!)猜测它是通过引用而不是内容来比较客户时,我写了以下内容:

那什么也没做。它反复调用GetHashCode(),我捏造它来强制它为任何匹配的 ClientID 返回相同的哈希码,但它仍然创建了 1300 个客户端组。

问候,

詹姆士。

-------### 更新 2 ###-------

好的,我想我会尝试让 Linq2Sql 输出仅用于分组的简单值:

然后将测试 Linq2Objects 更改为:

这样可行。所以匿名类型以我希望它们的方式进行比较,通过内容而不是引用(显然)这不是:

这仍然会创建 1300 个组。

因此,匿名类型以一种我不理解的神奇方式进行比较。如何让我的Client班级像匿名类型一样进行比较?

问候,

詹姆士。

-------### 找到解决方案###-------

-------### 非常感谢 Enigmativity ###-------

我需要重写该Equals()方法而不是实现 == 运算符。现在分组工作了,我有一个很棒的 Xml 文档要reutrn!

非常感谢,

詹姆士。

0 投票
3 回答
2948 浏览

linq - Linq:创建空的 IGrouping

我想使用 Linq 创建一个函数来总结传入的值序列。该函数应如下所示:

问题是生成的 IDictionary 应该有一个 default(TKey) 条目,即使传入的序列不包含具有该键的值。这可以以纯粹的功能方式完成吗?(不使用可变数据结构。)

我能想到的唯一方法是在查找之前调用 .Union ,然后将其输入字典。但这需要我创建一个空的 IGrouping,如果没有明确的类,这似乎是不可能的。有没有一种优雅的方式来做到这一点?

编辑:我们可以假设 TKey 是一个值类型。

0 投票
7 回答
249291 浏览

c# - 如何从 IGrouping 获取值

我有一个关于方法IGrouping的问题Select()

假设我有IEnumerable<IGrouping<int, smth>>这种方式:

哪里listList<smth>

现在我需要以IGrouping某种方式将每个值传递给另一个列表:


任何人都可以建议如何在这种情况下List<smth>从 a 中获取值 ( )吗?IGrouping<int, smth>

0 投票
1 回答
488 浏览

c# - 检测是否为 IEnumerable已分组,在检查类型时我得到了一些疯狂的结果

所以我试图弄清楚传递给我的方法的任何随机 IEnumerable 是否已被分组。我的想法是我将以不同的方式处理分组数据。我的问题是IGrouping<>一个通用接口,它没有实现非通用接口,无论出于何种原因,我都无法用is语句对其进行测试。

在这里测试一下是我的示例代码:

输出如下:

所以似乎除非我知道被分组的值的类型,否则我无法测试它是否被分组?这是 .Net 框架中的错误吗?

以上结果怎么可能?


编辑:Jon Skeet 的回答已经死了......作为对其他发现自己遇到同样困难的人的礼貌,以下代码完成了检查 IEnumerable 是否被分组的工作(基于 Mr . Skeet 使用 dynamic 关键字的奇思妙想):

假设代码与上面相同:

0 投票
2 回答
1470 浏览

linq - 在Repeater ItemDataBound 中获取IGrouping 数据

我想在转发器中按年对新闻文章进行分组。格式为:

2010

文章列表

2011

文章列表

我的访问层返回新闻文章的平面列表,特别是 List。因此,我将它们分组并将它们绑定到中继器,如下所示:

问题是试图从 ItemDataBound 事件中获取列表。到目前为止,我有以下内容:

有任何想法吗?

提前致谢!

0 投票
1 回答
661 浏览

.net - 分组数据上的淘汰赛 foreach 数据绑定

我试图弄清楚如何使用淘汰赛 foreach 数据绑定遍历 .Net 分组。我遇到的问题是,一旦将 IGroupings 序列化为 JSON,我不知道如何迭代 .Net 集合......

在服务器端,我有一个如下所示的 .Net 对象:

我正在通过将实体Grouped集合BookingLeg按其分组来创建属性StartDateBookingResult然后我使用 JSON返回实体。为该Grouped属性生成的 JSON 如下所示(我已折叠并展开节点,以便您更好地了解生成的内容):

在此处输入图像描述

我想在我的客户端上做的是创建一个模板并绑定到敲除 foreach 绑定,将键作为列表标题输出,然后对于该键中的每个值,从该值中输出一些详细信息。它看起来像这样:

我试图这样做:

我知道以上是错误的,因为一个 - 分组中不存在密钥。

有谁知道如何创建模板以正确输出列表中分组的键和值? 顺便说一句,我在这里也使用 jquery mobile(因此是数据角色的东西)。

谢谢!

詹姆士

0 投票
1 回答
3817 浏览

c# - 从 IGrouping 检索所有值

我目前有:

从这段代码:

PortableKey 的代码是:

基本上过滤和抓取所有重复的文件。我如何得到它,以便我以这种方式拥有所有 FileInfo?

0 投票
2 回答
4415 浏览

c# - 如何显示 IEnumerable> 使用编辑器模板

我有一堆按页眉分组的项目。

我想在页面上显示它们,标题文本后跟每个单独项目的编辑器模板。

我尝试使用嵌套模板如下:

主页:

ListofGrouping 编辑器模板:

IGrouping 编辑器模板:

这一直有效到最后一行。我得到了所有的标题值,但没有显示单个项目。

如果我不能让它以这种方式工作,我将只使用数据网格并在那里进行分组,但我认为这在 MVC3 中应该是可能的。

0 投票
1 回答
6178 浏览

c# - 使用 AutoMapper 映射分组集合

我有以下代码不起作用:

我不断收到以下异常:

值 \"System.Collections.Generic.List 1[SCGRE.Business.Model.ZoneDTO]\" is not of type \"System.Linq.IGrouping2[System.String,SCGRE.Business.Model.ZoneDTO]\" 不能在此通用集合中使用。\r\n参数名称: 值

我不明白为什么它试图将 a 映射List<T>到 anIGrouping<String, T>或者我没有正确理解异常......但我基本上有一个IEnumerable<IGrouping<String, Zone>>并且我想将它映射到IEnumerable<IGrouping<String, ZoneDTO>>

请注意,我创建了一个从Zoneto的地图,ZoneDTO如下所示:

那是因为这两个类具有几乎完全相同的属性。

有任何想法吗?