这是我正在使用的 linq 语句:
var sortedList =
(from p in OriginalList
where p.NValue != null
orderby Math.Abs(p.NValue.Value) descending
select p);
OriginalList 是一个包含超过 10,000 个元素的 Transaction 对象列表。NValue 是 Transaction 的可为空属性。每次 OriginalList 更新时,都会执行该语句。
我发现有时,此语句可能会引发以下异常: System.InvalidOperationException: Nullable object must have a value。
我尝试进行单元测试,并用一个只有一个事务的 OriginalList 来提供它。此交易的 NValue 为空。它不会触发此异常。
任何人都知道这里发生了什么?非常感谢。
我们正在使用 Linq to SQL。这是堆栈跟踪:
2011-10-05 16:14:06,826 [SRV101 DC\Admin] [59] 错误 Utils.AProxy`1 - AProxy [TProxy] 加载期间出错
System.InvalidOperationException: Nullable object must have a value.
at CServer.TLoader.b__2(Trasaction p) in c:\...\TLoader.cs:line 61
at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
at System.Linq.OrderedEnumerable`1.d__0.MoveNext()
at CServer.TLoader.GetMultipliers(IEnumerable`1 OriginalList) in c:\...\TLoader.cs:line 64
at CServer.TProxy.OnLoad() in c:\...\TProxy.cs:line 29
at Utils.AProxy`1.Load() in c:\...\AProxy.cs:line 252