这是我的模型:
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”的小数属性。
我有一个存储主题对象列表的数据库。我想从数据库中任何主题实例中包含的任何 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/