Странное поведение с Linq - PullRequest
3 голосов
/ 11 ноября 2011

У меня есть приложение Windows Forms (.NET 4.0), работающее с базой данных Sql Server CE 3.5, к которому я получаю доступ через соединение EF.

Вот мой начальный запрос, который возвращает два результата:

var list = db.UserPresentation
                         .Select(up => new
                         {
                             UserPresentationID = up.UserPresentationID,
                             PresentationName = up.PresentationName,
                             DateRequested = up.DateRequested,
                             Edit = string.Empty,
                             Delete = string.Empty,
                             Download = string.Empty
                         })
                         .OrderByDescending(up => up.DateRequested)
                         .ToList();

Теперь я ввожу внешнюю переменную и предложение where, и она возвращает ноль результатов. Если я запускаю этот же код в LinqPad, он возвращает 2 результата.

 int userID = 2;

            // load list of user presentations
            var list = db.UserPresentation
                         .Where(up => up.UserID == userID)
                         .Select(up => new
                         {
                             UserPresentationID = up.UserPresentationID,
                             PresentationName = up.PresentationName,
                             DateRequested = up.DateRequested,
                             Edit = string.Empty,
                             Delete = string.Empty,
                             Download = string.Empty
                         })
                         .OrderByDescending(up => up.DateRequested)
                         .ToList();

Теперь я жестко закодировал идентификатор пользователя внутри запроса, и он снова возвращает два результата:

var list = db.UserPresentation
                         .Where(up => up.UserID == 2)
                         .Select(up => new
                         {
                             UserPresentationID = up.UserPresentationID,
                             PresentationName = up.PresentationName,
                             DateRequested = up.DateRequested,
                             Edit = string.Empty,
                             Delete = string.Empty,
                             Download = string.Empty
                         })
                         .OrderByDescending(up => up.DateRequested)
                         .ToList();

Я действительно в тупике. Есть идеи, что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

UserID обнуляется?

Если это так, обязательно сделайте .Where(up => up.UserID.HasValue && up.UserID.Value == userID)

Однажды у меня было что-то похожее с ненулевой датой

0 голосов
/ 16 ноября 2011

Вы пытались присвоить то же жестко закодированное значение внутри вашей переменной?Я предполагаю, что значение в вашей переменной не найдено среди ваших данных, то есть если вы уверены, что имя переменной является правильным.

...