Linq - 使用数组属性内的元素进行分组

2024-03-27

我有许多对象,每个对象都有一个数组,我想按数组内的值对这些对象进行分组,因此从概念上讲,它们如下所示:

var objects = new []{
  object1 = new object{
    elements = []{1,2,3}
  },
  object2 = new object{
    elements = []{1,2}
  },
  object3 = new object{
    elements = []{1,2}
  },
  object4 = new object{
    elements = null
  }
}

分组后:

group1: object1
group2: object2,object3
group3: object4

我尝试过的事情: 实际课程:

    public class RuleCms
        {
            public IList<int> ParkingEntitlementTypeIds { get; set; }
        }


var rules = new List<RuleCms>()
        {
            new RuleCms()
            {
                ParkingEntitlementTypeIds = new []{1,2}
            },
            new RuleCms()
            {
                ParkingEntitlementTypeIds = new []{1,2}
            },
            new RuleCms()
            {
                ParkingEntitlementTypeIds = new []{1}
            },
            new RuleCms()
            {
                ParkingEntitlementTypeIds = null
            }
        };

var firstTry = rules.GroupBy(g => new { entitlementIds = g.ParkingEntitlementTypeIds, rules = g })
                    .Where(x => x.Key.entitlementIds !=null && x.Key.entitlementIds.Equals(x.Key.rules.ParkingEntitlementTypeIds));

var secondTry =
            rules.GroupBy(g => new { entitlementIds = g.ParkingEntitlementTypeIds ?? new List<int>(), rules = g })
                .GroupBy(x => !x.Key.entitlementIds.Except(x.Key.rules.ParkingEntitlementTypeIds ?? new List<int>()).Any());

您可以使用IEqualityComparer https://msdn.microsoft.com/en-us/library/ms132151%28v=vs.110%29.aspx班级。这是代码:

class MyClass
{
    public string Name { get; set; }
    public int[] Array { get; set; }
}

class ArrayComparer : IEqualityComparer<int[]>
{
    public bool Equals(int[] x, int[] y)
    {
        return x.SequenceEqual(y);
    }

    public int GetHashCode(int[] obj)
    {
        return string.Join(",", obj).GetHashCode();
    }
}

Then

var temp = new MyClass[]
{
    new MyClass { Name = "object1", Array = new int[] { 1, 2, 3 } },
    new MyClass { Name = "object2", Array = new int[] { 1, 2 } },
    new MyClass { Name = "object3", Array = new int[] { 1, 2 } },
    new MyClass { Name = "object4", Array =null }
};

var result = temp.GroupBy(i => i.Array, new ArrayComparer()).ToList();
//Now you have 3 groups
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq - 使用数组属性内的元素进行分组 的相关文章

  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 在搜索 List 时,为什么 Enumerable.Any(Func predicate) 比带有 if 语句的 foreach 慢

    最近有件事引起了我的好奇心 Why is the Enumerable Any Func
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 如何在 python selenium 中通过类名及其文本定位元素

    您好 我正在尝试通过元素的类名及其包含的文本来定位元素 div class fc day number 15 div 有一堆fc day number在具有不同值的页面上 我需要具有例如 15 的那个 I do driver find el
  • 将 numpy ndarray 写入图像

    我正在尝试在 Python 中读取二进制文件 8 位 RGB 元组 对其进行一些转换 然后将其写入为 png 图像 我正在执行以下操作 typeinfo np dtype gt i1 read single bytes data np fr
  • 在 PHP 中使用自动加载类时是否存在性能下降?

    目前 我通过在网站的每个页面上包含 all inc php 文件来加载所有类 然后该文件继续包含我将在整个网站上使用的所有配置 类 函数等 我的问题是 我经常使用仅与网站的某些页面 部分相关的类 因此我经常在页面开头包含一堆不会使用的类 显
  • 更改 imshow 来源

    我有一个包含 3 列的数据表 我想根据前两列在彩色二维图中绘制第三列 例如对于下表 即 4 0 4 0 0 313660827978 4 0 5 0 0 365348418405 4 0 6 0 0 423733120134 5 0 4 0
  • 如何在 Toad 中打开表名称自动完成功能?

    我使用的是 Toad 版本 11 0 0 116 当我开始输入表时 我没有获得默认的表名选项 如何开启自动完成功能 Pressing Ctrl should show you a list of available tables 例如输入
  • Jenkins 构建步骤在“npm install ”上失败

    Jenkins 新手 我正在 Jenkins 中设置我们的构建 设置构建步骤来运行 nodejs 脚本 使用 Sencha Touch 2 将构建的应用程序引入本机 iOS 应用程序的脚本 Nodejs 脚本需要扳手库 Jenkins 用户
  • OSX Lion 上 Java 应用程序的全屏功能

    如何在 Java 应用程序中 本地 实现 OSX Lion 的全屏功能 目前给出的答案包含了一种实现全屏功能的好方法 我读到 Eclipse 可能能够使用 Lion 的 本机 全屏功能 这就是我要问的 我在 Apple 的 Java 发行说
  • “npx react-native run-android”与“react-native run-android”有什么区别

    有什么区别npx 反应本机运行 android vs 反应本机运行 Android 目前有两个 CLI react native community cli 由react native直接使用的 这使得它成为您项目的传递依赖 react n
  • React-native 中 Stack.Screens 之间的 Stack.Navigator 淡入淡出过渡?

    如何在 React native 中为 Stacked Screes 添加过渡效果
  • 如何在使用基于类的视图注册后立即登录用户?

    我正在一个销售图像的网站上工作 我正在尝试找到一种方法 以便用户可以login注册后使用class基于视图 我已经使用基于函数的视图完成了它 但我想基于类进行它 因为它需要更少的代码 下面是与function基于的观点 My models
  • 为什么使用标志+位掩码而不是一系列布尔值?

    考虑到我有一个对象可能处于一个或多个真 假状态 我一直有点模糊为什么程序员经常使用标志 位掩码而不是只使用几个布尔值 一切都在 NET 框架上 不确定这是否是最好的示例 但 NET 框架具有以下内容 public enum AnchorSt
  • 使用 FCM 服务离线注销?

    通知消息有公共和私有两种类型 使用此应用程序的任何人都可以看到公共消息 私人消息只能由一个用户看到 这些私人消息可能包含一些机密信息 在iOS上实现这个场景时 设备的 FCM 令牌针对每个应用程序实例 即 在应用程序重新安装时 用户可能会获
  • 在传递函数指针时是否应该转发有关 noexcept-ness 的知识?

    我写了下面的代码来测试noexcept跨函数调用的传播 似乎它并不像我想象的那样工作 在 GCC 4 7 2 中 可以有效地测试函数是否被noexcept仅直接或作为模板专业化参数传递时 但not当作为参数传递给模板化函数时 或者作为函数指
  • ICollection - 获取单个值

    从 ICollection 获取值的最佳方式是什么 除此之外 我们知道该集合是空的 您可以使用 LINQ 来实现此目的 var foo myICollection OfType
  • -canOpenURL:URL 失败:“spotify:” - 错误:“(null)”

    不确定这是否属实 但从我读到的内容来看 人们说这个问题仅发生在 Xcode 模拟器上 因此您必须在实际设备上进行测试 问题是我当前的服务器是本地节点服务器http localhost 3000 并且我的iOS设备无法访问该服务器 1 有没有
  • 测试终结器和 IDisposable

    问题是如何测试调用 Finalize 时对象释放资源的事实 该类的代码 public class TestClass IDisposable public bool HasBeenDisposed get private set publi
  • 澄清比较不同类型的对象

    以下句子让我感到困惑 来自 python org 上的 Guido 教程 请注意 比较对象 不同类型是合法的 结果 是确定性的但任意的 类型按其名称排序 因此 列表总是小于 字符串 字符串总是较小 比元组等 比元组等 这意味着对于 a 90
  • 在 CustomListview 中使用 TTS 时出现 NullPointerException

    我有自定义列表视图 其中包含内容和 TTS 选项 在使用 TTS 时会抛出空指针异常 Listview 也不会显示我的应用程序已停止 Logcat 中显示错误 应用程序适配器 java public class ApplicationAda
  • 在 JMS 队列中使用 Ruby,而不是 JRuby?

    使用 Ruby 而不是 JRuby 将消息推送到 JMS 队列 由 Tibco EMS 托管 的最简单方法是什么 Stomp http docs codehaus org display STOMP Home是一种机制 允许任意客户 htt
  • Linq - 使用数组属性内的元素进行分组

    我有许多对象 每个对象都有一个数组 我想按数组内的值对这些对象进行分组 因此从概念上讲 它们如下所示 var objects new object1 new object elements 1 2 3 object2 new object