gpt4 book ai didi

c# - 最大函数 Linq 查询 - Nullable Int 不是 IEnumerable?

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:37 25 4
gpt4 key购买 nike

我一直在努力在我的 LINQ 表达式中使用 Max 函数。我想从去年(“最大”年份)的多个 SQL 表中选择各种属性。红色的波浪线告诉我我的 int?不包含 Max 和 Enumerable.Max 的定义(我想要的函数)需要 IEnumerable 的接收器类型。我对所有这些东西都是全新的,虽然我在网上搜索过,但我无法清楚地解释我需要做什么来解决这个问题。我认为这是一个 SQL 表,它会像普通 SQL 查询一样遍历行。

我的代码,我尝试了很多变体:

var otherPrograms = (from hm in db.HabitatManagement
join svy in db.Survey on hm.SurveyID equals svy.SurveyID
join iu in db.InventoryUsers on hm.UserID equals iu.UserID
join pt in db.ProgramType on hm.ProgramTypeID equals pt.ProgramTypeID
where pt.Program != "State Agency Public Land Programs"
&& pt.Program != "State Agency Private Land Programs"
&& svy.ReportingYear.Max()
select new
{
iu.StateID,
hm.ProgramTypeID,
pt.Program,
svy.ReportingYear
})
.Distinct()
.Select(x => new { x.StateID, x.Program, x.ProgramTypeID, x.ReportingYear, DisplayText = x.ReportingYear.ToString() + ", " + x.StateID.ToString() + ", " + x.Program.ToString() })
.OrderBy(x => x.StateID);

我也尝试过嵌套查询来实现同样的事情(不确定我是否做对了):

&& svy.ReportingYear = (from svy in db.Survey
select svy.ReportingYear.Max())

当我查看 ReportingYear 属性的定义时,它看起来像这样:

public Nullable<int> ReportingYear {get; set;}

我很确定问题在于它不是一个 IEnumerable 那么如何在不弄乱我的 SQL 表的情况下将它变成一个?

最佳答案

这应该给出 Survey 集合/表中的最大 ReportingYear 值:

int max = (from svy in db.Survey
where svy.ReportingYear.HasValue
select svy.ReportingYear.Value).Max();

关于c# - 最大函数 Linq 查询 - Nullable Int 不是 IEnumerable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45986483/

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