我有一个 IQueryable 查询,有时我需要以相同的方法使用它。此查询基于作为参数传递的另一个查询。
我需要将一个值乘以两个日期之间的天数的结果相加。
参数查询 = IQueryable 列表;
IQueryable<ChildEntity> query = lista.SelectMany(s => s.ChildEntities).Where(w=>w.IsActive.Equals("Y");
DateTime maxDate = lista.Max(m => m.Date);
decimal value = query.Sum(s => (s.Value) * (maxDate - s.ParentEntity.Date).Days);
这给出了例外:
Specified method is not supported.
我也试过:
decimal value = query.Sum(s => (s.Value) * SqlMethods.DateDiffDay(maxDate, s.Parent.Date);
还尝试了 SqlFunctions.DateDiff和EntityFunctions.DiffDays并且所有这些最后三个都给了我这个例外:
Method 'System.Nullable`1[System.Int32]
DateDiffDay(System.Nullable`1[System.DateTime], System.Nullable`1[System.DateTime])'
is not supported for execution as SQL.
我不想使用 Enumerable 因为这会导致大量记录。
有没有其他方法可以解决这个问题?
(顺便说一句,我使用 Devart 作为提供者。)