Miz*_*iaQ 5 .net c# linq linq-to-sql
错误:无法将null值分配给类型为System.Int32且具有非可空值类型的成员.程序在这里崩溃:
Nullable<Int32> maxTagFrequency = (from t in tagSummary select t.tagCount).Max();
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我声明变量可以为空,int?maxTagFrequency也不起作用......
整个LINQ查询:
private void BindTagCloud()
{
int pro_id = Convert.ToInt32(proj_id);
var tagSummary = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
join pro in db.Projects on it.ProjectID equals pro.ProjectID
where pro.ProjectID == pro_id &&
pro.ProjectID == it.ProjectID &&
it.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
Tag = tagGroup.Key,
tagCount = tagGroup.Count()
};
Nullable<Int32> maxTagFrequency = (from t in tagSummary select t.tagCount).Max();
var tagCloud = from af in db.AgileFactors
join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID
join s in db.Stories on psf.StoryID equals s.StoryID
join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID
join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID
join pro in db.Projects on it.ProjectID equals pro.ProjectID
where pro.ProjectID == pro_id &&
pro.ProjectID == it.ProjectID &&
it.ProjectIterationID == pim.ProjectIterationID &&
pim.ProjectIterationMemberID == s.ProjectIterationMemberID &&
s.StoryID == psf.StoryID &&
psf.AgileFactorID == af.AgileFactorID
group af by af.Name into tagGroup
select new
{
Tag = tagGroup.Key,
weight = (double)tagGroup.Count() / maxTagFrequency * 100
};
ListView1.DataSource = tagCloud;
ListView1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
小智 10
试试这个:
int? maxTagFrequency = (from t in tagSummary select (int?)t.tagCount).Max();
Run Code Online (Sandbox Code Playgroud)
当你将强制转换放在linq查询中时,它允许整个结果在必要时为null.
我搜索了"空序列上的linq max"并且以下链接是相关的:Max或Default?
特别是在该页面上是本文的链接 - 这提供了有关其工作原理的更详细说明:http://www.interact-sw.co.uk/iangblog/2007/09/10/linq-aggregates
| 归档时间: |
|
| 查看次数: |
8796 次 |
| 最近记录: |