【发布时间】:2012-10-03 06:44:19
【问题描述】:
所以我在 SO 和其他地方浏览了大约 20 个关于此的示例,但没有找到一个涵盖我正在尝试做的事情。这 - Can I specify my explicit type comparator inline? - 看起来像我需要的,但还远远不够(或者我不明白如何更进一步)。
- 我有一个 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 进行比较。
【问题讨论】:
标签: c# linq group-by iequalitycomparer