使用LINQ .OrderByDescending不起作用

时间:2014-02-22 21:01:28

标签: c# linq entity-framework

我正在尝试构建一个查询,其中有一个学生名称,然后是他所属的俱乐部的嵌套集合。我想用OrderByDescending组织这个集合。我不知道要在括号中提供什么。

public void GetStudentsClubNameRev()
        {
            try
            {
                using (SchoolContainer = new SchoolContainer())
                {

                    var query = from student in SchoolContainer.Students
                                select new
                                {
                                    StudentName = student.Name,
                                    ClubName = student.StudentClubMatches
                                        .Where(s =>s.StudentId == student.Id)
                                        .Select(c => c.Club.Name)
                                        .OrderByDescending(o => "Name")
                                };
                }
            }
            catch (Exception ex)
            {

            }
        }

在.OrderByDescending(o =>“Name”)中我不知道我的谓词是什么。我想说命令登上俱乐部名称的名字。但我得到错误,因为我认为我不明白它想要什么。

Screenshot of edmx

3 个答案:

答案 0 :(得分:3)

选择“Club.Name”后,当前的可枚举只是一个字符串。你只需要一个传递选择器:

.Select(c => c.Club.Name)
.OrderByDescending(name => name)

答案 1 :(得分:2)

如果您在选择之前订购了OrderByDescending,您也可以这样做:

var query = from student in SchoolContainer.Students
    select new
    {
        StudentName = student.Name,
        ClubName = student.StudentClubMatches
            .Where(s =>s.StudentId == student.Id)
            .OrderByDescending(c => c.Club.Name)
            .Select(c => c.Club.Name)
    };

干杯

答案 2 :(得分:0)

要按属性排序,您应使用以下内容:
代码:

.OrderByDescending(o => o.Name)