gpt4 book ai didi

c# - 如何编辑列表中的重复项?

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:48 24 4
gpt4 key购买 nike

我正在使用带有 cId(类(class) ID)和 cName(类(class)名称)的 DropDownList。但是,如果有重复的 cName,我想加入 startDatecName。喜欢:$"cName ({startDate})"

这是我的列表的样子:

var list = new List<(int cId, string cName, string startDate)>
{
(1, "Math", "1/12"),
(2, "Music", "1/12"),
(3, "English", "1/12"),
(4, "English", "11/4"),
(5, "Swedish", "1/12"),
(6, "Russia", "1/12")
};

因为有两个 cName 用英文, startDate 应该加到它的字符串里,比如:

cId    cName
---- -----
1 | "Math"
2 | "Music"
3 | "English (1/12)"
4 | "English (11/4)"
6 | "Swedish"
7 | "Russia"

我的想法是:

如果列表中有任何重复的 cNamecName = $"cName ({startDate})"

编辑:

这是将列表添加到 DropDownList 的方式:

foreach (var item in list)
{
dplCourse.Items.Add(new ListItem(item.cId, item.cName));
}

最佳答案

您需要遍历列表以找出哪些是重复项,并在将重复项添加到显示列表之前更改重复项的名称。

var list = new List<(int cId, string cName, string startDate)>
{
(1, "Math", "1/12"),
(2, "Music", "1/12"),
(3, "English", "1/12"),
(4, "English", "11/4"),
(5, "Swedish", "1/12"),
(6, "Russia", "1/12")
};

var duplicates = new HashSet<string>(
list.GroupBy(x => x.cName) //Group the items by name
.Where(g => g.Count() > 1) //Find groups with more than 1
.Select(g => g.Key)); //Just add the names to the HashSet, not the group

foreach (var item in list)
{
var displayName = item.cName
if(duplicates.Contains(displayName))
{
displayName += $" ({item.startDate})";
}
dplCourse.Items.Add(new ListItem(item.cId, displayName));
}

关于c# - 如何编辑列表中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47166929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com