使用linq独特的功能?

这个问题在这里已经有了答案:

  • LINQ对特定属性的Distinct()17的答案

  • 您可以在具有两种属性的匿名类型上使用GroupBy ,以使它们不同:

    var coursesList = 
         from c in not_subsribe
         group c by new { Id = c.Cours.ID, Name = c.Cours.Name } into g
         order by g.Key.Name
         select new SelectListItem
         {
             Text = g.Key.Name,
             Value = g.Key.Id
         };
    

    这是有效的,因为匿名类型会自动覆盖Equals + GetHashCode为您提供GroupByDistinct所需的内容。 所以现在你也可以使用Distinct

    var coursesList = not_subsribe
    .Select(c => new { Id = c.Cours.ID, Name = c.Cours.Name })
    .Distinct()
    .OrderBy(x => x.Name)
    .Select(x => new SelectListItem
         {
             Text = g.Key.Name,
             Value = g.Key.Id
         }); 
    

    您可以使用:

    var coursesList = courses.DistinctBy(c => courses.Cours.Name)
                             .Select(crs => new SelectListItem
                                              {
                                                  Text = crs.Cours.Name,
                                                  Value = crs.Cours.ID.ToString()
                                              });
    

    对不起,我忘记提到DistinctBy方法在称为MoreLINQ的第三方库中可用 。 这个库可以从这里下载使用Nuget包管理器:http://www.nuget.org/packages/morelinq/

    你可以从这里找到更多关于MoreLINQ的信息:https://code.google.com/p/morelinq/

    链接地址: http://www.djcxy.com/p/51297.html

    上一篇: Use linq distinct function?

    下一篇: C# Distinct List from a List