我有一个Collection,我正在尝试使用Distinct方法删除重复项。
public static Collection<MediaInfo> imagePlaylist
imagePlaylist = imagePlaylist.Distinct(new API.MediaInfoComparer());
我收到错误“无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.ObjectModel.Collection'。存在显式转换(您是否错过了转换?)”
imagePlaylist曾经是一个List(我可以使用.ToList()),但为了符合“CA1002不公开通用列表”我想将List转换为Collection。
-Thanks
答案 0 :(得分:13)
您可以做的是,首先将IEnumrable
转换为通用列表,然后使用此列表使用Collection
类的参数化构造函数创建新的Collection
。
public static Collection<MediaInfo> imagePlaylist
imagePlaylist = new Collection<MediaInfo>
(
imagePlaylist
.Distinct(new API.MediaInfoComparer())
.ToList()
);
答案 1 :(得分:1)
我为此创建了一个小扩展方法:
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();