Преобразование 'System.Collections.Generic.IEnumerable <T>' в 'System.Collections.ObjectModel.Collection <T>' - PullRequest
6 голосов
/ 30 декабря 2011

У меня есть коллекция, я пытаюсь использовать метод Distinct для удаления дубликатов.

public static Collection<MediaInfo> imagePlaylist

imagePlaylist = imagePlaylist.Distinct(new API.MediaInfoComparer());

Я получаю сообщение об ошибке "Не удалось неявно преобразовать тип 'System.Collections.Generic.IEnumerable' в 'System.Collections.ObjectModel.Collection '. Существует явное преобразование (вам не хватает приведения?) "

imagePlaylist раньше был списком (я мог использовать .ToList ()), но для соответствия" CA1002Не раскрывать общие списки "Я хочу преобразовать список в коллекцию.

-Спасибо

Ответы [ 2 ]

13 голосов
/ 30 декабря 2011

Что вы можете сделать, это сначала преобразовать IEnumrable в общий список, а затем использовать этот список для создания нового Collection с использованием параметризованного конструктора класса Collection.

public static Collection<MediaInfo> imagePlaylist

imagePlaylist = new Collection<MediaInfo>
                    (
                       imagePlaylist
                      .Distinct(new API.MediaInfoComparer())
                      .ToList()
                    );
1 голос
/ 25 марта 2015

Я создал небольшой метод расширения для этого:

public static class CollectionUtils
{
    public static Collection<T> ToCollection<T>(this IEnumerable<T> data)
    {
        return new Collection<T>(data.ToList());
    }
}

Таким образом, вы можете выполнить встроенное преобразование и повторно использовать утилиту в своем решении:

imagePlaylist.Distinct(new API.MediaInfoComparer()).ToCollection();
...