考虑使用Select
索引的重载作为转换的一部分(在此处记录)。
如果您想要每个不同元素的最后一个不同元素,您可以尝试相应地使用GroupBy
order each IGrouping
,并获取每个组的正确元素。
repeat = domain + dir.Split('/')
.Select((word, index) => Tuple.Create(word, index))
.Where(x => keep.Contains(x.Item1))
.GroupBy(x => x.Item1)
.Select(g => g.OrderByDescending(x => x.Item2).First())
.OrderBy(x => x.Item2)
.Select(x => x.Item1)
.Aggregate((gi, j) => gi + "/" + j) + repeat.Substring(lastSlash);
在这里,我们将每个单词与其索引结合起来(使用Select
上面提到的重载)。然后我们过滤到感兴趣的词。Distinct
我们现在使用GroupBy
来生成一个,而不是使用IEnumerable<IGrouping<string, Tuple<string, int>>
。由于IGrouping
它本身实现了 ,因此我们通过在按索引排序时获取每个元素的最后一个元素来将IEnumerable
我们的列表投影IGroupings
到一个列表中。然后我们按索引对我们的新列表进行排序,以便单词保持有序,并投影到元组的一部分。Tuple<string, int>
IGrouping
Tuples
string