如果数组中有重复项c#,则查找数组中所有项的索引

时间:2014-09-28 17:46:51

标签: arrays c#-4.0

假设我有一个包含五个元素的字符串数组{" dog"," cat"," rat"," dog",& #34;牛""狗"}

在这个例子中有6个元素。我想知道每个元素的索引。 IndexOf()方法首次出现该单词。但我想知道所有元素的索引,包括重复的元素,如狗重复3次。所以,我想知道动物[0],动物[3],动物[5]的所有狗的指数。以及猫,老鼠和牛的指数也

1 个答案:

答案 0 :(得分:0)

这是LINQ查询,您可以找到带索引的重复项

var data = new [] {"dog","cat","rat","dog","cow","dog"};
var duplicates = data
        .Select((x, index) => new {Text = x, index})
        .Where(x => (data
            .GroupBy(i => i)
            .Where(g => g.Count() > 1)
            .Select(g => g.Key).ToList())
            .Contains(x.Text));
foreach (var duplicate in duplicates)
{
    Debug.WriteLine("Name:" + duplicate.index + " Index:" + duplicate.Text);
}