Converting 'System.Collections.Generic.IEnumerable<T&

本文关键字:IEnumerable lt Generic System Converting Collections | 更新日期: 2023-09-27 18:19:08

我有一个集合,我试图使用Distinct方法来删除重复项。

public static Collection<MediaInfo> imagePlaylist
imagePlaylist = imagePlaylist.Distinct(new API.MediaInfoComparer());

我得到错误"不能隐式转换类型"System.Collections.Generic。到System.Collections.ObjectModel.Collection。存在显式转换(您是否缺少强制转换?)"

imagePlaylist曾经是一个列表(我可以使用。tolist()),但为了遵守"CA1002不暴露通用列表",我想将列表转换为集合。

-谢谢

Converting 'System.Collections.Generic.IEnumerable<T&

您可以做的是,首先将IEnumrable转换为泛型列表,然后使用该列表使用Collection类的参数化构造函数创建新的Collection

public static Collection<MediaInfo> imagePlaylist
imagePlaylist = new Collection<MediaInfo>
                    (
                       imagePlaylist
                      .Distinct(new API.MediaInfoComparer())
                      .ToList()
                    );

我为此创建了一个小扩展方法:

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();