В вашем вопросе есть хотя бы одна опечатка.
Вы заявляете, что после
oJCTransLabour = HttpContext.Current.Session["CurrentLabourTransactions"] as Collection<JCTransLabour>;
oJCTransLabour
не равно нулю, верно? Это имеет смысл, если сессия содержит его.
Затем вы определяете oCurrentLabourTrans
и назначаете ему запрос LINQ. И тогда вы говорите, что
// at this point the collection oJCTransLabour = null
Подождите, как это может быть нулевым? Вы даже не изменили его (оно было oCurrentLabourTrans
изменено), и вы просто сказали, что oJCTransLabour
не равно нулю!
Обновление: Я только что заметил, что в именах тоже есть тип: вы называете это oJCTransLabours
, затем вы называете это oJCTransLabour
. Пожалуйста, опубликуйте точный код, чтобы мы не делали предположений о том, что именно вы, возможно, опечатали.
И, конечно, выражение LINQ не может быть нулевым.
Я думаю, что наиболее вероятно, что oJCTransLabours
является нулевым, хотя вы заявляете иначе.
Возможно, вы так думаете, потому что вы уверены, что HttpContext.Current.Session["CurrentLabourTransactions"]
не равно нулю. Это верно, но вы используете оператор as
для приведения значения к Collection<JCTransLabour>
. В отличие от оператора приведения, as
не выдает исключение, если типы не совпадают, он просто возвращает null
.
Возможно, вы захотите попробовать
oJCTransLabour = (Collection<JCTransLabour>)HttpContext.Current.Session["CurrentLabourTransactions"];
и посмотрите, появляются ли какие-либо ошибки.