【发布时间】:2021-07-25 10:39:43
【问题描述】:
我有多个 MyObject 实例,它们需要按它们的类型 MyType 分组(每个对象很多)。只需要每种类型的最新对象(由MyObject.Date 定义)。
以下代码通过嵌套的 foreach 语句实现了这一目标。
IEnumerable<MyObject> objects = ...;
var grouped = new Dictionary<MyType, MyObject>();
foreach (MyObject obj in objects.OrderBy(x => x.Date))
foreach (MyType type in obj.Types)
grouped[type] = obj;
如何使用GroupBy 使用LINQ 方法语法重写它?
【问题讨论】:
-
你的问题很难理解。 似乎您想要的是生成多个分组,即为每个可能的
MyType值进行一个分组(而不是单个组,其中每个分组代表@987654328 的某种组合@ 值)。如果是这样,您应该能够简单地将可能的MyType值的集合投影到基于每个这些值的分组中。 您尝试过什么?请修正您的问题,使其包含正确的minimal reproducible example,并详细说明该代码的作用、与您想要的有何不同以及... -
...具体您需要什么帮助。还请确保您的描述是明确的(请注意,对输入和预期输出的详细解释有助于提供这种澄清,这是当前版本的问题所缺乏的)。
-
@peter-duniho 如果我的问题无法理解,我很抱歉。你是对的,我想为每个包含的
MyType值生成一个分组。提供的代码已经实现了第一段中概述的目标,但我想知道如何使用 LINQGroupBy而不是嵌套的 foreach 语句来编写它。