Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > каким образом в списке List найти повторения???


Автор: factura 3.6.2014, 23:15
Метод Distinct не годиться ибо он удаляет не уникальные значения,LINQ тоже не пригоден так как было требование его не использовать

Автор: jonie 4.6.2014, 09:48
Distinct ничего не удаляет, и вообще это часть LINQ расширений.
Ну создайте что-то вроде (не очень хороший код, конечно):
Код

 public static Dictionary<T, List<int>> GetRepeats<T>(List<T> list)
        {
            var rv = new Dictionary<T, List<int>>();
            for(int i=0;i<list.Count;++i)
            {
                var item = list[i];
                if (rv.ContainsKey(item))
                {
                    rv[item].Add(i);
                }
                else
                {
                    rv[item] = new List<int>();
                }
            }

            var rv1 =rv.Where(x => x.Value.Count > 0).ToDictionary(k => k.Key, v => v.Value);

            return rv1;
        }

Автор: Miller_time 30.7.2014, 17:39
Вообщем тоже не много креатива не самый оптимальный вариант:
Код

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> items = new List<string>();
            items.Add("Hello");
            items.Add("World");
            items.Add("Hello");
            List<string> originalItem = new List<string>();
            foreach (var x in items)
            {
                bool isFindvar = false;
                foreach (var y in originalItem)
                {
                    if (x == y)
                    {
                        Console.WriteLine("Что то тут не так {0}", x);
                        isFindvar = true;
                        break;
                    }
                }
                if (isFindvar == false)
                {
                    originalItem.Add(x);
                }
            }
            Console.WriteLine("Все");
            Console.ReadLine();
        }
    }
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)