我有一个具有以下结构的课程: -
public class Gallery
{
private string _category;
public string Category
{
get
{
return _category;
}
set
{
_category = value;
}
}
}
我创建了一个这样的列表对象: - List<Gallery> GalleryList = new List<Gallery>();
我已从sharepoint列表向此列表对象添加了项目。现在我需要来自此列表对象的不同类别名称。我试过了GalleryList.Distinct()
。但我收到了错误。如果有人知道答案,请帮助我。
答案 0 :(得分:2)
如果您只需要类别名称,则需要从图库列表中投射到一系列类别名称 - 然后 Distinct
将起作用:
// Variable name changed to match C# conventions
List<Gallery> galleryList = ...;
IEnumerable<string> distinctCategories = galleryList.Select(x => x.Category)
.Distinct();
如果您想要List<string>
,只需在结尾处添加对ToList
的通话。
您需要using
指令:
using System.Linq;
。
请注意,调用galleryList.Distinct()
本身应该编译(如果你有using
指令)但它只是通过引用比较对象,因为你没有覆盖Equals
/ {{1 }}
如果您确实需要一组图库,所有图库都有不同的类别,那么您可以使用MoreLINQ方法{/ 3}}:
GetHashCode
在这种情况下,您需要DistinctBy
命名空间的IEnumerable<Gallery> distinct = galleryList.DistinctBy(x => x.Category);
指令。
您还应该了解automatically implemented properties。您的using
课程可以更简洁地写成:
MoreLinq
答案 1 :(得分:0)
GalleryList.DistinctBy(x => x._category);