0

私はエンティティ フレームワークを使用しており、次のプロジェクションがあります。

        var items = from mapsDsc in DbContext.MapsDesc
                    join mapCat in DbContext.MapsCategories on mapsDsc.MapID equals mapCat.MapID
                    join mainCat in DbContext.MainCategories on mapCat.MainCategory equals mainCat.MainCatID
                    join subCat in DbContext.SubCategories on mapCat.SubCategory equals subCat.SubCatID
                    select new DataModel.ComplexEntities.MapsDescExt
                    {
                        MapID = mapsDsc.MapID,
                        MapName = mapsDsc.MapName,
                        MapLink = mapsDsc.MapLink,
                        Note = mapsDsc.Note,
                        MainCategoryID = mapCat.MainCategory,
                        MainCategoryName = mainCat.Category,
                        SubCategoryID = mapCat.SubCategory,
                        SubCategoryName = subCat.Category
                    };

このプロジェクションは、無名のものではなく、強いタイプを埋めることに注意してください。このプロジェクションを少しカスタマイズする必要がありますが、方法がわかりません。

最後の参加で、「or」演算子を使用して次の条件を実装する必要があります。

join subCat in DbContext.SubCategories on mapCat.SubCategory equals subCat.SubCatID or subCat.SubCatID equals "0"

どうすればいいですか?私が見たすべての例は匿名型に関連しており、私にとっては良くありません。ありがとう

4

1 に答える 1

0

結合構文を使用する必要はありませんwhereマニュアルで同じことを行ってから、追加の条件を挿入できます。

var items = from mapsDsc in DbContext.MapsDesc
            join mapCat in DbContext.MapsCategories on mapsDsc.MapID
                                                equals mapCat.MapID
            join mainCat in DbContext.MainCategories on mapCat.MainCategory
                                                 equals mainCat.MainCatID
            from subCat in DbContext.SubCategories
/* here */  where mapCat.SubCategory == subCat.SubCatID || subCat.SubCatID == "0"
            select new DataModel.ComplexEntities.MapsDescExt
            {
            ...

(これmapCat.SubCategoryは id フィールドである必要があることに注意してください。おそらくどれかはご存じでしょう)。

于 2013-03-31T00:01:16.323 に答える