【发布时间】:2019-10-04 19:59:04
【问题描述】:
所以我试图从 2 个不同的集合中获取两个值,用户集合包含我需要的名称,而 Post 集合包含所需的分数。我正在尝试创建一个 LINQ 查询,该查询通过比较 ID 来获取用户发布的所有帖子,然后从该用户那里获得最低的帖子分数。这是我目前所拥有的:
这会打印出我需要的 2 个值,但不会按最小值对它们进行分组。
var lowestQuery =
from user in Assignment1.userDict
from post in Assignment1.allPosts
where user.Value.ID == post.AuthorID
orderby user.Value.Name ascending
group post.Score by new { user.Value.Name, post.Score } into scores
select new
{
name = scores.Key,
lowestScore = scores.Min()
};
基本上只需要用户最低的帖子,但我在将两个值分组时遇到了麻烦。当我只是按 user.value.Name 分组时,我能够正确获取名称列表,但不能正确获取分数,因为它不存在于我使用 groupby 语句创建的分数中。任何帮助将不胜感激
【问题讨论】:
-
如果您包含您的课程会有所帮助。试试:
group post by new { user.Value.Name } into scores然后在你的选择中你应该可以做lowestScore = scores.Min(p => p.Score) -
@jcruz 这不起作用,因为一旦我进入 select 语句,它只会从我放置 groupby 的分数中获取值
-
@GertArnold 数据来自 LINQ 查询中的集合。这都是 C#
-
@HarryFischer 同样,在不知道您的模型是什么样子的情况下,我们只能猜测。试试我之前的建议,使用这个:
group post by user.Value.Name into scores。您应该了解返回的组将是您的帖子记录,因此您应该能够从那里获得最低分数 -
@jcruz 哇,我错过了,谢谢。我能问一下你在 min(p=>p.score) 中的“p”是从哪里得到的吗?
标签: c# linq collections group-by