gpt4 book ai didi

c# - LINQ 聚合查询

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:17 24 4
gpt4 key购买 nike

我正在尝试通过 via 显示来自数据库的结果,其中包括来自同一表的聚合值。我有一张包含姓名、分数和回合的表格,其中包含每个特定回合的球员姓名和分数。我想在网格中显示它(比如我选择第 5 轮),但我也想显示每个玩家的排名,即他们在所有轮次中的总得分,直到并包括所选轮次。

到目前为止,我有两个查询 - 一个返回姓名列表和他们的回合得分总和,另一个返回他们的名字,特定回合的得分。我只需要总和的索引来获得排名,我不需要分数本身的总和。我正在尝试将第一个查询包含在第二个查询中,类似

Rank = r1.FindIndex(r => r.Name == tr.Name)

但我一直收到错误'LINQ to Entities 无法识别方法'Int32 FindIndex'。我知道为什么我得到这个(它不能编译成 SQL)但我不知道如何解决它。那么,我如何构建我的查询,以便它从表中获取我需要的行,同时也考虑正确的排名,即第一个查询中玩家的索引?有什么建议吗?

最佳答案

如果您希望查询在内存中运行,请使用IEnumerable 形式而不是IQueryable 形式。使用 Linq 干净地执行此操作的方法是 .AsEnumerable()

Rank = r1.AsEnumerable().FindIndex(r => r.Name == tr.Name);

请注意,仅当编译时类型为 IQueryable 时,才需要调用 AsEnumerable()。由于我们讨论的是扩展方法,它们将根据运行时已知的类型正确调用 - 所有 IEnumerable 方法都使用 foreachyield return 模式,它将 SQL 查询迭代到内存中

关于c# - LINQ 聚合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com