При запросе коллекции с использованием linq всегда возвращается ноль - PullRequest
0 голосов
/ 04 октября 2010

Я опубликовал часть кода на днях, но это вызвало еще большую путаницу. Это мой код.

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 много транзакций с разными датами. Кажется, хотя он всегда возвращает нулевые записи.

Заранее спасибо за любую помощь.

1 Ответ

4 голосов
/ 04 октября 2010

Эта строка является виновником:

return oCurrentLabourTrans as Collection<JCTransLabour>;

oCurrentLabourTrans - это , а не a Collection<JCTransLabour>, и поэтому операция as возвращает ноль, как и ожидалось. Если бы вы сделали это вместо:

return (Collection<JBTransLabour) oCurrentLabourTrans;

произойдет сбой, и будет брошен InvalidCastException. Операторы LINQ создают объекты, которые непосредственно реализуют IEnumerable<>; они не создают автоматически объекты коллекции и списка.

Если вам нужно вернуть Collection<>, вы можете сделать это вместо:

return new Collection<JCTransLabour>(oCurrentLabourTrans.ToList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...