【问题标题】:how to check uniqueness of an array list items in c#.net如何在 c#.net 中检查数组列表项的唯一性
【发布时间】:2017-11-17 01:55:49
【问题描述】:

我在 C#.net 中有一个带有以下数据的数组列表,所以我想检查数组列表项中的 3 个项目的唯一性。ID、日期、名称的唯一性 “ID;日期时间;名称;代码”当然我只希望日期时间的日期部分是唯一的,而不是日期和时间部分

"1;06/07/2017 11:17:16;out;0"
"1;06/07/2017 11:27:16;out;2"
"1;06/07/2017 11:28:16;out;0"
"1;06/07/2017 11:20:16;out;3"

所以我想区分这个数组列表,因为重复的日期和 ID 和 out 请帮我解决这个问题。

【问题讨论】:

标签: c# string arraylist distinct


【解决方案1】:

最好的方法是使用 LINQ。我强烈建议使用List<string> 而不是ArrayList。您可以通过以下方式区分

using System.Collections;
using System.Linq;

ArrayList list = new ArrayList() {
    "1;06/07/2017 11:17:16;out;0",
    "1;06/07/2017 11:27:16;out;2",
    "1;06/07/2017 11:28:16;out;0",
    "1;06/07/2017 11:20:16;out;3"
};

var distinctEnumerable = list.Cast<string>()
    .GroupBy(x => {
        var items = x.Split(';');
        var dateParts = items[1].Split(' ');
        return string.Join(";", items[0], dateParts[0], items[2]);
    })
    .Select(x => x.Key);

如果您愿意,可以将 IEnumerable&lt;string&gt; 转换为 List&lt;string&gt;string[] 或其他方便的容器。

这里的主要逻辑是,我GroupBy List 使用您需要区分的前 3 个部分,然后选择组的 Key,这将为我们提供不同的列表。

Live Code Demo Here

【讨论】:

  • 亲爱的维克拉姆:只有 3 个要素很重要。 ID、日期和字符串。如果这些项目是相同的。必须删除重复的项目
  • @Vikhram:当然我想要日期时间的日期部分而不是日期和时间
  • @ Vikhram 我测试了你的代码它返回 2 个项目。但我预计只有 1 个项目,因为项目是 "1;06/07/2017 11:17:16;out;0" "1;06 /07/2017 11:27:16;out;2" "1;06/07/2017 11:28:16;out;0" "1;06/07/2017 11:20:16;out;3"并且所有 ID 和日期部分和名称都相同
  • @Vikarm 我希望结果仅为 "1;06/07/2017 11:17:16;out;0"
  • 我正在运行您的代码并查看结果。我确定它返回 2 个项目
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多