如何在此处使用linq distinct运算符删除重复的course.Cours.Name,
var coursesList = from courses in not_subsribe
select new SelectListItem
{
Text = courses.Cours.Name,
Value = courses.Cours.ID
.ToString()
};
答案 0 :(得分:0)
您可以使用:
var coursesList = courses.DistinctBy(c => courses.Cours.Name)
.Select(crs => new SelectListItem
{
Text = crs.Cours.Name,
Value = crs.Cours.ID.ToString()
});
抱歉,我忘了提及DistinctBy
方法在名为 MoreLINQ 的第三方库中可用。可以从这里使用Nuget Package manager下载此库:http://www.nuget.org/packages/morelinq/
您可以从此处了解有关MoreLINQ的更多信息:https://code.google.com/p/morelinq/
答案 1 :(得分:0)
您可以在具有两个属性的匿名类型上使用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
});