【问题标题】:Get the max date from a list of value inside a dictionary从字典中的值列表中获取最大日期
【发布时间】:2017-02-14 15:00:14
【问题描述】:

我没有找到一种优雅的 Linq 方法来检索分配给任务的人员列表中分配给人员的最大日期。

我的代码是

public class Mission
{
    public string MissonAssignedTo { get; set; }
    public DateTime Date { get; set; }
}

public Dictionary<string, Dictionary<string, List<Mission>>> MissionList = 
    new Dictionary<string, Dictionary<string, List<Mission>>>();

我有这本含有这种价值观的字典

MissionList[0] Key = MissionImpossible
            Value = count 1
                  Key=Sean
                  Value=count 7
                        [0] = date = 10/01/2017
                        [1] = date = 10/01/2016
                        [2] = date = 10/01/2017
                        [3] = date = 10/01/2018
                        [4] = date = 10/01/2015
                        [5] = date = 10/01/2014
                        [6] = date = 10/01/2013

MissionList[1] Key = MissionImpossibleThePayPack
            Value = count 1
                  Key=Connery
                  Value=count 4
                        [0] = date = 10/01/2017
                        [1] = date = 10/01/2019
                        [2] = date = 10/01/2017
                        [3] = date = 10/01/2018

我需要为每个人及其最大日期检索字典,类似这样。

dicoResult= { 
                {Sean,10/01/2018} , 
                {Connery,10/01/2019} 
            }

最好的问候。 乔莉妮丝

【问题讨论】:

  • 你能为字典示例提供有效的c#代码吗?并展示您迄今为止尝试过的内容

标签: c# linq list dictionary max


【解决方案1】:

虽然您的自定义类型对我来说看起来很奇怪,但如果我理解正确,那么这应该会给您预期的结果:-

var result = MissionList.SelectMany(x => x.Value)
                        .ToDictionary(x => x.Key, y => y.Value.Max(z => z.Date));

首先展平您的内部字典,最后使用ToDictionary 将结果投影到字典。

Sample Fiddle.

【讨论】:

  • 谢谢拉胡尔,你说得对,我的自定义类型很奇怪,我想我会把它改成更精确的。
猜你喜欢
  • 2020-11-06
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 2020-02-05
  • 2015-12-11
相关资源
最近更新 更多