如何获得 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)。