Get Non-Distinct elements from an IEnumerable

前端 未结 4 1458
心在旅途
心在旅途 2021-02-13 13:18

I have a class called Item. Item has an identifier property called ItemCode which is a string. I would like to get a list of all non-distinct Items in a list of Items.

E

4条回答
  •  独厮守ぢ
    2021-02-13 13:47

    I'd suggest writing a custom extension method, something like this:

    static class RepeatedExtension
    {
        public static IEnumerable Repeated(this IEnumerable source)
        {
            var distinct = new Dictionary();
            foreach (var item in source)
            {
                if (!distinct.ContainsKey(item))
                    distinct.Add(item, 1);
                else
                {
                    if (distinct[item]++ == 1) // only yield items on first repeated occurence
                        yield return item;
                }                    
            }
        }
    }
    

    You also need to override Equals() method for your Item class, so that items are correctly compared by their code.

提交回复
热议问题