使用linq独特的功能?
这个问题在这里已经有了答案:
您可以在具有两种属性的匿名类型上使用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
为您提供GroupBy
或Distinct
所需的内容。 所以现在你也可以使用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