我正在尝试做,随机获取一个#34;对象列表#34;从所有列表。
我正在接受NullReferenceException
我也尝试过List无法使其正常运行。
List<BL.Test.Test> Tests = BL.Test.GET.TestGroup(CategoryId);
// NullReferenceException on the line below:
int[] Groups = Tests.Select(d => d.TestGroupId).Distinct().ToArray();
Session["TestGroup"] = Tests.Select(t => t.TestGroupId = Groups[rnd.Next(Groups.Length)]);
答案 0 :(得分:2)
显然,BL.Test.GET.TestGroup
是返回null
的方法。
这是您示例中第二行中NullReferenceException
最可能的解释。
如果Select
,Distinct
和ToArray
是System.Linq
中声明的扩展方法,则这是唯一可行的原因,请检查您的方法。
<强> UPD 强>
对不起伙计们,我错了。
TestGroupId
BL.Test.Test
班的成员错过了。
<强> UPD-2 强>
这是社区调试问题的一个很好的例子。据我所知,这里不受欢迎
答案 1 :(得分:0)
由于TestGroupId
为null
,因此null.Distinct()
会引发NullArgumentReference
例外。
使用以下代码更改您的代码:
List<BL.Test.Test> Tests = BL.Test.GET.TestGroup(CategoryId);
int[] Groups = Tests.Where(d=>d.TestGroupId.HasValue).Select(d => d.TestGroupId).Distinct().ToArray();
Session["TestGroup"] = Tests.Select(t => t.TestGroupId = Groups[rnd.Next(Groups.Length)]);
利用HasValue
查找TestGroupId
是否有某些价值。