一个linq语句,其中包含多个group by列,不允许使用thenby

Mik*_*itt 4 c# linq

我是LINQ的新手,所以请给我一些懈怠.

我有一个LINQ语句,我已经分组了多个列.根据搜索,它会根据搜索的匹配程度对每条记录进行排名.

  • 1点 第一封名字
  • 2分 前2个字母的名字
  • 第一名匹配4分
  • 8分 用于姓氏匹配

所以第一顺序就是那样.然后我想要一个Thenby语句按FirstName排序

var ResultsListOrdered = from O in ResultsList
                                         group O by new
                                         {
                                             O.FirstName,
                                             O.LastName,
                                             O.SSN,
                                             O.Email,
                                             O.Phone
                                         } into g
                                         orderby g.Max().ResultMatch descending
                                         thenby g.Key.FirstName ascending
                                         select new SearchResultViewModel
                                         {
                                             ID = g.Max().ID,
                                             FirstName = ti.ToTitleCase(g.Key.FirstName.ToLower()),
                                             LastName = ti.ToTitleCase(g.Key.LastName.ToLower()),
                                             SSN = g.Key.SSN,
                                             Email = g.Key.Email.ToLower(),
                                             Phone = g.Key.Phone,
                                             ResultMatch = g.Max().ResultMatch
                                         };`
Run Code Online (Sandbox Code Playgroud)

如果取出thenby行,如果LINQ语句有效.但是只要你把它放进去就行不通.

这应该工作.任何帮助都会很棒

这是我将鼠标悬停在它上面时显示的错误

在此输入图像描述

好的,我在这里添加以下评论,因为我不能添加图片给评论

在此输入图像描述

在此输入图像描述

Yur*_*ich 6

thenby使用不是有效的关键字orderby g.Max().ResultMatch descending, g.Key.FirstName ascending.

您可以在ThenBy运算符中看到解释:

在查询表达式语法中,orderby [第一标准],[第二标准](Visual C#)或Order By [第一标准],[第二标准](Visual Basic)子句转换为ThenBy的调用.

  • @MikeHewitt也许我们应该联系作者解释一下.根据微软的文档,他错了.查询表达式只是糖果,它被转换为方法调用.根据他们自己的文档,逗号转换为`ThenBy`. (2认同)