我在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 请帮我解决这个问题。
答案 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个部分,然后选择组的密钥,这将为我们提供不同的列表。