Почему LINQPAD предполагает, что эта переменная является System.Int32 и как я могу передумать? - PullRequest
1 голос
/ 15 ноября 2010

Я пытаюсь оптимизировать запрос, поэтому я подключил его к LINQPAD, но продолжаю получать ошибку нулевой ссылки, не могу присвоить нулевое значение System.Int32 .. когда я закомментирую один FolderID в конце,ошибка больше не возникает.Почему предполагается, что FolderID является System.Int32 и как я могу сделать его Int32?вместо этого, так что это nullable, и я могу выполнить запрос?

(from groupBundle in GroupBundles
    join userGroup in UserGroups on groupBundle.GroupID equals userGroup.GroupID
    join bundle in Bundles on groupBundle.BundleID equals bundle.BundleID
    where userGroup.UserID == 75
    orderby bundle.BundleName
    select new
    {
        BundleID = bundle.BundleID,
        BundleName = bundle.BundleName,
        BundleIcon = bundle.BundleIcon,
        UseSpecialPlayer = (bundle.UseSpecialPlayer != null && bundle.UseSpecialPlayer == true) ? true : false,
        height = bundle.PuHeight,
        width = bundle.PuWidth,
        UserID = 75,
        CompanyID = 32,
        IsFavorite = ((from f in Favorites where f.FavoriteTypeID == 1 && f.UserID == 75 && f.ActionID == bundle.BundleID select f).Count() > 0) ? true : false,

        //THIS ONE HERE
        FolderID = (from cf in CategoryFolders 
            join folder in Folders on cf.FolderID equals folder.FolderID
            where folder.CompanyID == 32 &&
            cf.CategoryID == bundle.BundleID
            select cf.FolderID).FirstOrDefault()
}).Distinct()

Ответы [ 3 ]

3 голосов
/ 15 ноября 2010

Добавить приведение к nullable int к присваиваемому выражению:

FolderID = (int?)(from cf in CategoryFolders

Является ли FolderID обнуляемым в базе данных?Если нет, это объясняет это.

0 голосов
/ 15 ноября 2010

Извините, я не могу опубликовать это как комментарий, но просто запрашиваю эту работу?

    //THIS ONE HERE
    FolderID = (from cf in CategoryFolders 
        join folder in Folders on cf.FolderID equals folder.FolderID
        where folder.CompanyID == 32 &&
        cf.CategoryID == bundle.BundleID
        select cf.FolderID).FirstOrDefault()
0 голосов
/ 15 ноября 2010

Я предполагаю, что FolderId находится где-то в базе данных, и я предполагаю, что он объявлен как обнуляемый тип, возможно, даже обнуляемый столбец Int.

...