按分组和日期收集的不同值
Distinct value from collection by grouping and date
我有一个具有属性 'level'、'section'、'theme' 和 'date' 的 Umbraco 节点列表,前三个是字符串,最后一个是 DateTime .
我需要过滤我的列表,以便每个条目都是唯一的,基于 'level'、'section' 和 'them' 的组合。但是如果发现重复项,select 保留在列表中的节点应该是日期最早的节点。
我一直在尝试使用 LINQ 和 Lambdas 解决这个问题,但几个小时后终于碰壁了。
例子
预过滤
level section theme date
a b c 01/02/2003
d b c 01/04/2003
a b c 23/02/2015
d b c 12/12/2003
d b c 28/10/2003
post-过滤
level section theme date
a b c 01/02/2003
d b c 01/04/2003
按级别、部分和主题分组。如果有多个条目,select 最早日期的条目。
可能非常简单,但我是 C#/LINQ 的新手。任何帮助表示赞赏。
这应该是您要查找的内容:
var ans1 = from s in src
group s by new { s.level, s.section, s.theme } into sg
select new { sg.Key.level, sg.Key.section, sg.Key.theme, date = sg.Min(s => s.date) };
GroupBy
通常在查询理解中更容易理解,但如果您更喜欢 lambda 语法
var ans2 = src.GroupBy(s => new { s.level, s.section, s.theme }, (skey, sg) => new { skey.level, skey.section, skey.theme, date = sg.Min(s => s.date) });
我有一个具有属性 'level'、'section'、'theme' 和 'date' 的 Umbraco 节点列表,前三个是字符串,最后一个是 DateTime .
我需要过滤我的列表,以便每个条目都是唯一的,基于 'level'、'section' 和 'them' 的组合。但是如果发现重复项,select 保留在列表中的节点应该是日期最早的节点。
我一直在尝试使用 LINQ 和 Lambdas 解决这个问题,但几个小时后终于碰壁了。
例子
预过滤
level section theme date
a b c 01/02/2003
d b c 01/04/2003
a b c 23/02/2015
d b c 12/12/2003
d b c 28/10/2003
post-过滤
level section theme date
a b c 01/02/2003
d b c 01/04/2003
按级别、部分和主题分组。如果有多个条目,select 最早日期的条目。
可能非常简单,但我是 C#/LINQ 的新手。任何帮助表示赞赏。
这应该是您要查找的内容:
var ans1 = from s in src
group s by new { s.level, s.section, s.theme } into sg
select new { sg.Key.level, sg.Key.section, sg.Key.theme, date = sg.Min(s => s.date) };
GroupBy
通常在查询理解中更容易理解,但如果您更喜欢 lambda 语法
var ans2 = src.GroupBy(s => new { s.level, s.section, s.theme }, (skey, sg) => new { skey.level, skey.section, skey.theme, date = sg.Min(s => s.date) });