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

时间:2013-05-20 21:10:27

标签: c# linq

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

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

  • 1 pt。第一封名字
  • 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
                                         };`

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

这应该有效。任何帮助都会很棒

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

enter image description here

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

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:6)

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

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

  

在查询表达式语法中,orderby [first criterion],[second   标准](Visual C#)或Order By [first criterion],[second   criteria(Visual Basic)子句转换为。的调用   ThenBy。

答案 1 :(得分:2)

我不相信你能以这种方式使用thenby它不是关键字而是扩展方法。为了做你想做的事,你需要这样做。

orderby g.Max().ResultMatch descending, g.Key.FirstName ascending

答案 2 :(得分:1)

使用查询语法时,您可以用逗号分隔多个排序键,而不是thenby