您可以根据范围创建分组吗? [复制]

2023-12-01

这与另一个问题,我认为这确实解决了一个更简单的问题,所以我在这里问更简单的问题,希望它能帮助我解决更复杂的问题。

我希望能够在 linq to sql 查询中创建一个分组,该分组基于另一组数据中的一系列数据。不过,我认为它在 linq to object 中应该同样有效,所以我们就这样吧。

假设您有两个包含值的列表

{100, 110, 120, 130, 140, 150, 160, 170}
{115, 145, 180}

现在,我想将第一个列表按第二个列表分组为范围(每个组之间的值)。也就是说,我想要这样的分组(隐含 0):

{0}   {100, 110}
{115} {120, 130, 140}
{145} {150, 160, 170}
{180}

我几乎可以肯定我滥用了术语,并且可能对 linq group by 运算符的工作方式有误解,但如果您明白我的意思,我希望得到一些建议。谢谢。


嗯,你当然可以express在 LINQ 中轻松实现:

var x = from value in values
        group value by ranges.Where(x => value >= x)
                             .DefaultIfEmpty()
                             .Last();

但我非常怀疑这在 LINQ to SQL 中是否有效。基本上,您必须找到一种将值映射到其中一个类别的简单方法。

完整示例:

using System;
using System.Linq;
using System.Collections.Generic;

class Test
{
    static void Main()
    {
        int[] values = {100, 110, 120, 130, 140, 150, 160, 170};
        int[] ranges = {115, 145, 180};

        var query = from value in values
                    group value by ranges.Where(x => value >= x)
                                         .DefaultIfEmpty()
                                         .Last();

        foreach (var group in query)
        {
            Console.WriteLine("{0}: {{{1}}}", group.Key, 
                              string.Join(", ", group));
        }
    }
}

Output:

0: {100, 110}
115: {120, 130, 140}
145: {150, 160, 170}

请注意,这won't包括任何没有任何值的类别。

另请注意,这会更简单(使用First()代替Last())如果您愿意稍微不同地进行分类:

115: {100, 110}
145: {120, 130, 140}
180: {150, 160, 170}

换句话说,如果类别是由第一个范围值定义的higher比行值。

编辑:这是一个提供空组的版本。但在我看来,这非常可怕:

var query = from range in ranges
            join value in values
            on range equals ranges.Where(x => value >= x)
                                  .DefaultIfEmpty()
                                  .Last() into groups
            select new { Key = range, Values = groups};

foreach (var group in query)
{
    Console.WriteLine("{0}: {{{1}}}", group.Key, 
                      string.Join(", ", group.Values));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您可以根据范围创建分组吗? [复制] 的相关文章

随机推荐

  • 如何在 Sublime Text 中自定义文件类型与语法关联?

    我希望 Sublime 2 编辑器将 sbt 文件 以突出显示语法 视为 Scala 语言 与 scala 相同 但我找不到在哪里进行设置 你碰巧知道吗 在 Sublime Text 中 在 v2 x 和 v3 x 中均得到确认 有一个菜单
  • SSRS动态共享数据源

    我有一个 ASP Net 网站 它使用 Microsoft Report Viewer Control 显示各种 SSRS 报告 我需要能够在运行时指定数据源 似乎我应该能够在呈现报告时指定 共享 数据源的名称 但我确实找不到方法来做到这一
  • 从 PostgreSQL 中的时间戳中提取日期 (yyyy/mm/dd)

    我想从 PostgreSQL 中的时间戳中提取日期部分 我需要它是一个 postgresqlDATE类型 以便我可以将其插入到另一个需要的表中DATE value 例如 如果我有2011 05 26 09 00 00 我想2011 05 2
  • 带有令牌参数的 https URL:安全性如何?

    在我们的网站上 我们根据用户的私人信息 通过表格提供 向用户提供模拟 我们希望允许他们稍后返回模拟结果 但不强迫他们创建登录 密码帐户 我们考虑过向他们发送一封带有链接的电子邮件 他们可以从中获取结果 但是 自然地 我们必须保护这个 URL
  • 将 XML 文件读入 DataTable 的代码

    我编写了以下代码 用于读取给定的 xml 文件并将内容写入数据表 请不要建议使用 LinqToXml 因为该选项已被规则 因为这是一个遗留应用程序 create the DataTable that will hold the data D
  • 在 python for 循环中使用“or”来定义默认序列

    我在某处看到过 for 循环的用法 def func seq None for i in seq or 1 2 3 print i func 3 4 5 Will print 3 4 5 func Will print 1 2 3 似乎当使
  • 六位unicode转义值比较

    例如 我有一个六位数的 unicode 字符U 100000我想与另一个进行比较char在我的 C 代码中 我读到的MSDN 文档是这个字符不能用 a 来表示char 并且必须由string 字符文字中不允许使用 U 10000 到 U 1
  • 在 Python 中展平字典或列表的通用 JSON 列表

    我有一组任意 JSON 数据 已在 Python 中解析为字典列表和不同深度的列表 我需要能够将其 扁平化 为一个字典列表 下面的例子 源数据示例1 u industry u id u 112 u name u A u id u 132 u
  • 批处理 – 如何正确分配可能包含引号的任意百分比数字 (%1) 或百分比星号 (%*) 参数?

    在从事我的工作时previous问题 我遇到了我最初正在解决的类似问题 实际上 我花了这个月的时间尝试创建一个通用的 bat 帮助程序库 该库将尽可能最好地处理任何名称的拖放文件 我想对调用者透明地执行此操作 并向后兼容任何现有脚本 因此文
  • Chrome 中 上 之间的悬停状态丢失

    我试图通过当用户将鼠标悬停在行上时更改行的背景颜色来实现简单的表行悬停效果 这很简单 tr hover background red 但是我注意到 Chrome 中的一个错误 其中一行中的单元格之间有一个很小的空间 我丢失了 hover和
  • 从android中的edittext框获取XXX-XXX-XXXX格式的电话号码

    你好 我正在编写一个 android 其中用户在编辑文本框中输入电话号码 我希望数字采用 xxx xxx xxxx 的形式 这意味着在用户输入前 3 个字母和另一个 后 应自动出现 I used EditText anum EditText
  • Java:如何注册侦听 JFrame 运动的侦听器

    如何跟踪 JFrame 本身的移动 我想注册一个每次都会被回调的监听器JFrame getLocation 将返回一个新值 EDIT这是一个代码 显示接受的答案正在解决我的问题 import javax swing public class
  • 使用通配符 SSL 证书通过 HTTPS 进行 WCF

    我们是在线浏览器内管理工具的开发人员 我们的主要软件目前通过互联网托管并可供客户访问 每个客户都有自己的主要软件实例和子域 例如 customerA ourdomain com 定向到在虚拟服务器上运行的客户 A 的服务 customerB
  • 使用正弦或余弦函数的 C/C++ 3D 烟花效果

    I am trying to implement fireworks effect in C I have a cube with dimensions 10x10x10 A rocket starts from the ground an
  • 从预先训练的 NASnet 网络进行迁移学习。如何知道要冻结的层数?

    为了训练图像分类模型 使用 Keras 或 Tensorflow 我想使用我自己的图像数据集重新训练 NASNetMobile 的一定数量的层 在本文中 https arxiv org pdf 1707 07012 pdf A 7 节 我们
  • MS SQL 上的字符串连接用于一组行

    假设我有 2 张桌子 1 与用户 另一个记录哪些用户使用了哪些代码 Users Id Name 1 John 2 Doe Codes Id UserId code 1 1 145 2 1 187 3 2 251 现在我想提取一个查询 结果如
  • 从 uploadify jquery 插件获取文件名

    这是我的第一篇文章 我在这里尝试获取上传文件的名称 以便用户可以根据需要删除它 就像雅虎一样 uploadifysub1 uploadify uploader JS uploadify swf script JS uploadify php
  • .Net 连接池 MySQL 临时表

    我们有一个在 NET MVC Web 应用程序中使用的 MySQL 数据库 我们实施连接池 因为它具有一些巨大的性能优势 我们还在一些关键存储过程中完成了一些相当繁重的处理 他们创建几个临时表和用户变量 这些临时表和用户变量在连接的生命周期
  • gganimate 根据时间对多条路径进行动画处理

    我解析了电子游戏 反恐精英 中有关手榴弹投掷的一些数据 下面的示例数据显示我有关于手榴弹从哪里投掷 手榴弹爆炸的位置以及何时投掷手榴弹的位置 df lt data frame pos x c 443 6699994744587 459 45
  • 您可以根据范围创建分组吗? [复制]

    这个问题在这里已经有答案了 这与另一个问题 我认为这确实解决了一个更简单的问题 所以我在这里问更简单的问题 希望它能帮助我解决更复杂的问题 我希望能够在 linq to sql 查询中创建一个分组 该分组基于另一组数据中的一系列数据 不过