c# - 具有多个 group by 列的 linq 语句不允许 thenby

标签 c# linq

我是 LINQ 的新手,所以请放慢我的脚步。

我有一个 LINQ 语句,我在其中对多个列进行了分组。根据搜索,它根据与搜索的匹配程度对每条记录进行排名。

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

所以第一个 Order By 就是这样。然后我想要一个 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 行,则 if LINQ 语句有效。但是一旦放入它就不起作用。

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

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

enter image description here

好的,我在这里添加这个用于下面的评论,因为我无法将图像添加到评论中

enter image description here

enter image description here

最佳答案

thenby 不是有效关键字,请使用 orderby g.Max().ResultMatch 降序,g.Key.FirstName 升序

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

In query expression syntax, an orderby [first criterion], [second criterion] (Visual C#) or Order By [first criterion], [second criterion] (Visual Basic) clause translates to an invocation of ThenBy.

关于c# - 具有多个 group by 列的 linq 语句不允许 thenby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16658483/

相关文章:

c# - WSE012 : The input was not a valid SOAP message because the following information is missing: action

c# - 更新 Observable 集合

vb.net - 使用 GridView 和 LINQ 进行排序的最佳方法是什么?

linq - Linq 查询的这一部分叫什么?

c# - LINQ to Entities 无法识别方法 - Entity Framework 和 DDD

c# - 随机洗牌 listBox 项目 C#

c# - 是否可以实现自定义安全转换(在任意抽象数据结构之间使用 "as")?

c# - 泛型和 Action 委托(delegate)

c# - 更新在另一个数据上下文中创建的对象

.net - 警告 : "Using the iteration variable in a lambda expression may have unexpected results"