如何获得 post 顺序(最后一个值)的不同列表?
How to get a distinct list in post order (last value)?
.Distinct()
returns 一个列表的不同值按顺序排列,即1,2,3,1
变成 1,2,3
.
我想获得最后一个的不同值,但总是 return 最后一个值而不是第一个 - 我该怎么做?
var input = new List<string> { "AAA", "BBB", "CCC", "AAA" };
//input = input
// .Distinct()
// .ToList();
// Returns: "AAA", "BBB", "CCC"
//input = input
// .GroupBy(c => c)
// .Select(c => c.OrderByDescending(x => x).Last())
// .ToList();
// Returns: "AAA", "BBB", "CCC"
// TEST
var output = new List<string> { "BBB", "CCC", "AAA" };
if (input.SequenceEqual(output))
{
Console.WriteLine("Success!");
}
else
{
Console.WriteLine("Fail!");
}
正如 Lasse v. Karlsen 指出的那样,反转字符串 运行 一个不同的字符串并再次反转字符串是可行的。
input.Reverse();
input = input
.Distinct()
.Reverse()
.ToList();
请注意使用了 2 个不同的 .Revers()
调用:List<T>.Reverse()
和 Enumerable.Reverse(source)
(Linq)。
.Distinct()
returns 一个列表的不同值按顺序排列,即1,2,3,1
变成 1,2,3
.
我想获得最后一个的不同值,但总是 return 最后一个值而不是第一个 - 我该怎么做?
var input = new List<string> { "AAA", "BBB", "CCC", "AAA" };
//input = input
// .Distinct()
// .ToList();
// Returns: "AAA", "BBB", "CCC"
//input = input
// .GroupBy(c => c)
// .Select(c => c.OrderByDescending(x => x).Last())
// .ToList();
// Returns: "AAA", "BBB", "CCC"
// TEST
var output = new List<string> { "BBB", "CCC", "AAA" };
if (input.SequenceEqual(output))
{
Console.WriteLine("Success!");
}
else
{
Console.WriteLine("Fail!");
}
正如 Lasse v. Karlsen 指出的那样,反转字符串 运行 一个不同的字符串并再次反转字符串是可行的。
input.Reverse();
input = input
.Distinct()
.Reverse()
.ToList();
请注意使用了 2 个不同的 .Revers()
调用:List<T>.Reverse()
和 Enumerable.Reverse(source)
(Linq)。