4

我是 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
                                         };`

如果您取出 thenby 行,则如果 LINQ 语句有效。但是一放进去就不行了。

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

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

在此处输入图像描述

好的,我在此处添加此内容以获取以下评论,因为我无法将图像添加到评论中

在此处输入图像描述

在此处输入图像描述

4

3 回答 3

6

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

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

在查询表达式语法中,orderby [第一个条件]、[第二个条件] (Visual C#) 或 Order By [第一个条件]、[第二个条件] (Visual Basic) 子句转换为对 ThenBy 的调用。

于 2013-05-20T21:15:38.913 回答
2

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

orderby g.Max().ResultMatch descending, g.Key.FirstName ascending
于 2013-05-20T21:16:27.173 回答
1

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

于 2013-05-20T21:17:29.067 回答