gpt4 book ai didi

c# - 使用 LINQ 从集合中的集合属性中检索最大数

转载 作者:行者123 更新时间:2023-11-30 20:38:20 24 4
gpt4 key购买 nike

这是我的模型:

public class SeasonScore
{
[Key]
public int SeasonScoreID { get; set; }

[DisplayName("Season")]
public string season { get; set; }

[DisplayName("Year")]
public int year { get; set; }

[DisplayName("Value")]
public decimal value { get; set; }

[DisplayName("Subject")]
public virtual Subject Subject { get; set; }
}

public class Subject
{
[Key]
public int SubjectID { get; set; }

[DisplayName("Subject")]
public string subject { get; set; }

[DisplayName("Scores")]
public virtual List<SeasonScore> scores { get; set; }

public Subject()
{
scores = new List<SeasonScore>();
}
}

如您所见,“Subject”的每个实例都包含一个“SeasonScore”列表。您还可以看到 SeasonScore 有一个名为“value”的 decimal 属性。

我有一个存储主题对象列表的数据库。我想从我的数据库中任何 Subject 实例中包含的任何 SeasonScore 实例中找到最大的“值”属性。

我可以从长远来看做到这一点,但我相信我应该能够使用 LINQ 快速完成它,尽管我不太明白。

最佳答案

假设您的类已使用 LINQ2SQL 或 Entity Framework 正确映射到数据库,您可以使用 Max 检索最大值,如下所示:

var maxVal = dbContext
.Subjects
.Max(s => s.scores.Max(v => v.value));

var maxVal = dbContext
.Subjects
.SelectMany(s => s.scores)
.Max(v => v.value);

在这两种情况下,查询都将被转换为 SQL,并生成一个完全在 RDBMS 中的标量。

关于c# - 使用 LINQ 从集合中的集合属性中检索最大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240530/

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