因此,我在 SO 和其他地方浏览了大约 20 个关于此的示例,但没有找到一个涵盖我正在尝试做的事情。这 -我可以指定我的显式类型比较器内联吗?- 看起来像我需要的,但还不够远(或者我不明白如何更进一步)。
- 我有一个 LoadData 列表,LoadData 对象具有引用类型和值类型的字段
- 需要对 ref 和 value 字段的混合进行分组,将输出投影到匿名类型
需要(我认为)提供自定义 IEqualityComparer 来指定如何比较 GroupBy 字段,但它们是匿名类型
private class LoadData { public PeriodEndDto PeriodEnd { get; set; } public ComponentDto Component { get; set; } public string GroupCode { get; set; } public string PortfolioCode { get; set; } }
到目前为止,我使用的最好的 GroupBy 查询:
var distinctLoads = list.GroupBy(
dl => new { PeriodEnd = dl.PeriodEnd,
Component = dl.Component,
GroupCode = dl.GroupCode },
(key, data) => new {PeriodEnd = key.PeriodEnd,
Component = key.Component,
GroupCode = key.GroupCode,
PortfolioList = data.Select(d=>d.PortfolioCode)
.Aggregate((g1, g2) => g1 + "," + g2)},
null);
这组,但仍有重复。
- 如何指定自定义代码来比较 GroupBy 字段?例如,组件可以通过 Component.Code 进行比较。