开发手册 欢迎您!
软件开发者资料库

.NET Core EF Core(Entity Framework Core)去掉重复数据(distinct)

本文主要介绍EF和EF Core中去除重复列数据获取单列数据的列表或获取整个Model列表。

1、去重获取单列数据的列表

1) 使用Distinct()方法

db.PageInfos.Select(p => p.Type).Distinct().ToList();

2)使用GroupBy()方法

db.PageInfos.GroupBy(p => p.Type).Select(p=>p.Key).ToList();

2、去重获取Model数据的列表

使用DistinctBy()扩展方法来实现,可以返回Model列表数据。

 public static class DistinctByClass
    {
        public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector)
        {
            HashSet seenKeys = new HashSet();
            foreach (TSource element in source)
            {
                if (seenKeys.Add(keySelector(element)))
                {
                    yield return element;
                }
            }
        }
    }