使用Linq从列表中索引重复项

时间:2018-08-28 12:38:10

标签: linq

假设我有一个字符串列表

var data = new List<string>{"fname", "phone",  "lname", "home", "home", "company", "phone", "phone"};

我想列出所有值并将索引添加到重复项中

fname,
phone,
lname,
home,
home[1],
company,
phone[1],
phone[2]

或类似的

fname,
phone[0],
lname,
home[0],
home[1],
company,
phone[1],
phone[2]

两种解决方案都对我有用。

Linq可以吗?

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ GroupBy来收集匹配项,然后使用Select的计数版本来附加索引。

var ans = data.GroupBy(d => d).SelectMany(dg => dg.Select((d, n) => n == 0 ? d : $"{d}[{n}]"));