1

クエリを最適化しようとしているので、LINQPAD にプラグインしましたが、null 参照エラーが発生し続けます。null 値を System.Int32 に割り当てることはできません..最後に FolderID をコメントアウトすると、エラーはありませんより長く発生します。FolderID が System.Int32 であると想定するのはなぜですか? どうすれば Int32 にできますか? 代わりに、null 可能であり、クエリを実行できますか?

(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()
4

3 に答える 3

3

割り当てられる式に nullable int へのキャストを追加します。

FolderID = (int?)(from cf in CategoryFolders

データベースでFolderIDはnull可能ですか? そうでない場合は、これで説明できます。

于 2010-11-15T18:59:02.697 に答える
0

FolderId はどこかのデータベースにあると想定していますが、null 許容型、おそらく null 許容 Int 列として宣言されていると思います。

于 2010-11-15T18:59:23.890 に答える
0

これをコメントとして投稿することはできませんが、クエリを実行するだけで機能しますか?

    //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()
于 2010-11-15T19:00:02.653 に答える