我前几天发布了部分代码,但这样做引起了更多的困惑。这是我的代码。
if ( HttpContext.Current.Session != null )
{
if ( HttpContext.Current.Session[ "CurrentLabourTransactions" ] != null )
{
Collection<JCTransLabour> oJCTransLabours = null;
oJCTransLabours = (Collection<JCTransLabour>)HttpContext.Current.Session["CurrentLabourTransactions"];
if (Settings.ShowTodaysTransactionInApproval)
if (oJCTransLabours != null) return oJCTransLabours;
if (oJCTransLabours != null)
{
//oJCtransLabour contains alot of record
var oCurrentLabourTrans = (from clt in oJCTransLabours
where clt.TransactionDate.Date != DateTime.UtcNow
select clt);
//oCurrentLabourTrans is null.
return oCurrentLabourTrans as Collection<JCTransLabour>;
}
}
}
return null;
当进入最终的if语句时,有很多具有不同日期的交易。它似乎总是返回空记录。
提前感谢您的帮助。
答案 0 :(得分:4)
这条线是罪魁祸首:
return oCurrentLabourTrans as Collection<JCTransLabour>;
oCurrentLabourTrans
不 a Collection<JCTransLabour>
,因此as
操作会按预期返回null。如果你这样做:
return (Collection<JBTransLabour) oCurrentLabourTrans;
演员表会失败并且会抛出InvalidCastException
。 LINQ运算符生成直接实现IEnumerable<>
的对象;它们不会自动创建集合和列表对象。
如果您必须返回Collection<>
,则可以改为:
return new Collection<JCTransLabour>(oCurrentLabourTrans.ToList());