LINQ等效于SELECT DISTINCT

时间:2013-12-03 03:18:29

标签: c# sql linq

我只想使用LINQ显示一个没有重复项的CourseNo列表,但是我无法完全理解语法。

        this.Distinct_CourseNo = (from c in Roster_Sections
                                  select c).Distinct(CourseNo).ToList;

SQL等价物将是:

SELECT DISTINCT CourseNo
FROM Roster_Sections

3 个答案:

答案 0 :(得分:4)

使用select c将包含Roster_Sections中的所有列,因此如果列中的至少一行与另一行不同,Distinct()将无效。

this.Distinct_CourseNo = (from c in Roster_Sections
                          select c.CourseNo).Distinct().ToList();

this.Distinct_CourseNo = Roster_Sections.Distinct(c => c.CourseNo).ToList();

答案 1 :(得分:3)

你传递Distinct描述清晰度定义的lambda:

this.Distinct_CourseNo = Roster_Sections.Distinct(x => x.CourseNo).ToList();

如果你想获得一个独特的课程编号列表而不是一个基于课程编号的独特课程列表,今草顿웃的答案是要走的路。

答案 2 :(得分:3)

只有拥有moreLINQ时,所有提供的答案才适用。但是,您可以尝试这样做:

this.Distinct_CourseNo = (from c in Roster_Sections
                          group c by c.CourseNo into g
                          select g.First()).ToList();