从类中获取不同的类别名称

时间:2014-04-11 06:13:53

标签: c#

我有一个具有以下结构的课程: -

  public class Gallery
{
         private string _category;
            public string Category
                {
                    get
                    {
                        return _category;
                    }
                    set
                    {
                        _category = value;
                    }
                }
        }

我创建了一个这样的列表对象: - List<Gallery> GalleryList = new List<Gallery>(); 我已从sharepoint列表向此列表对象添加了项目。现在我需要来自此列表对象的不同类别名称。我试过了GalleryList.Distinct()。但我收到了错误。如果有人知道答案,请帮助我。

2 个答案:

答案 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);