【问题标题】:How to remove item from List<Tuple<DateTime, string>>如何从 List<Tuple<DateTime, string>> 中删除项目
【发布时间】:2016-12-20 13:56:28
【问题描述】:

我正在尝试从包含元组的列表中删除项目,其中第一个元组项目的日期早于今天的日期。

这是我的代码:

 List<Tuple<DateTime, string>> Events = new List<Tuple<DateTime, string>>();

最好使用 linq。

我这样填写列表:

 Events.Add(new Tuple<DateTime, string>(date, stringtext));

因此,列表中日期在 2016 年 12 月 20 日之前的所有项目都应删除。第二个元组(字符串)无关紧要。

【问题讨论】:

  • 您真的要删除较早的项目,还是仅在 2016 年 12 月 20 日之后创建项目的枚举?因为显然你不能只使用 linq 来删除它们,那将在枚举时修改列表,这会很糟糕。您可以使用 linq 和 .ToList() 创建 2016 年 12 月 20 日之后的列表,然后将新列表分配给 Events 变量。

标签: c# linq list tuples


【解决方案1】:
List<Tuple<DateTime, string>> events = new List<Tuple<DateTime, string>>();

DateTime date = new DateTime(2016, 12, 20);

events = events.Where(x => x.Item1 > date).ToList();

这将在您的活动中留下日期大于 20.12.2016 的项目。

【讨论】:

  • 谢谢,正是我需要的
  • @KevinTinnemans 如果对您有帮助,您可以将答案标记为正确
  • 是的,我需要在提问后等待 15 分钟
【解决方案2】:

如果您确实需要从现有列表中删除它们,(而不是像其他解决方案所说的那样创建新列表)这里是代码:

List<Tuple<DateTime, string>> Events = new List<Tuple<DateTime, string>>();
DateTime date = new DateTime(2016, 12, 20);
Events.RemoveAll(x => x.Item1 < date);

【讨论】:

  • 这是一种更好的方法(不创建额外的集合)
【解决方案3】:

这使用 linq 和 .ToList() 创建 2016 年 12 月 20 日或之后的列表,然后将新列表分配给 events 变量。

events = events.Where(e=>e.Item1 >= new DateTime(2016, 12, 20)).ToList();

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    相关资源
    最近更新 更多