gpt4 book ai didi

c# - 对列表进行分组,并且仅当输入是列表时才获取不同的值

转载 作者:行者123 更新时间:2023-12-02 11:01:53 24 4
gpt4 key购买 nike

我需要以下方面的帮助:

我有一个列表,其中所有重复条目都需要从中删除,但我似乎无法获得正确的 linq 查询。现在列表本身包含一个字符串和一个字符串列表作为参数。

查看代码片段:

列表是从此类创建的

public class SD
{
public string From { get; set; }
public List<string> To { get; set; }
}

列表的输入可能如下所示:

var unsortedList = new List<SD>
{
new SD {From = "a", To = new List<string>{ "b" } },
new SD {From = "b", To = new List<string>{ "a" } },
new SD {From = "a", To = new List<string>{ "b", "c" } },
new SD {From = "a", To = new List<string>{ "b" } },
new SD {From = "a", To = new List<string>{ "c" } },
};

在类中的 To 是一个列表并且只是一个字符串之前,下面的代码工作得很好。它将返回 4 个条目,因为条目 1 和 4 相等(当然,第 3 个条目只有一个字符串)。

var sortedList = unsortedList.GroupBy(x => new { x.From, x.To }).Select(group => group.First()).ToList();

我一直在尝试 orderby、group 和 hashset,但似乎都不起作用。

最佳答案

您可以将 To 列表加入字符串中,并将其用作 GroupBy 中的键选择器的一部分方法。然后选择每个组中的第一个项目以获取不重复的 SD 项目列表

var sortedList = unsortedList.GroupBy(x => new {x.From, To = string.Join(",", x.To)})
.Select(g => g.First())
.ToList();

foreach (var item in sortedList)
Console.WriteLine($"{item.From} {string.Join(",", item.To)}");

它将产生以下输出

a b
b a
a b,c
a c

关于c# - 对列表进行分组,并且仅当输入是列表时才获取不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60776554/

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