如何在c#.net

时间:2017-06-14 19:07:54

标签: c# string arraylist distinct

我在C#.net中有一个带有以下数据的arrayList,所以我想检查arraylist项目中的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"

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

1 个答案:

答案 0 :(得分: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<string>转换为List<string>string[]或其他方便的容器。

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

Live Code Demo Here