我是 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 语句有效。但是一旦放入它就不起作用。
这应该有效。任何帮助都会很棒
这是我将鼠标悬停在上面时显示的错误
好的,我在这里添加这个用于下面的评论,因为我无法将图像添加到评论中
最佳答案
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/