Entity framework Linq到实体-使用多个contidion连接

Entity framework Linq到实体-使用多个contidion连接,entity-framework,linq-to-entities,Entity Framework,Linq To Entities,我正在使用实体框架,我有下一个投影: 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.MainCate

我正在使用实体框架,我有下一个投影:

        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
                    };
请注意,此投影填充强类型,而不是匿名类型。 我需要定制一下这个投影,但我不知道怎么做

在我最后一次加入时,我需要使用“或”运算符实现下一个条件:

join subCat in DbContext.SubCategories on mapCat.SubCategory equals subCat.SubCatID or subCat.SubCatID equals "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
            from subCat in DbContext.SubCategories
/* here */  where mapCat.SubCategory == subCat.SubCatID || subCat.SubCatID == "0"
            select new DataModel.ComplexEntities.MapsDescExt
            {
            ...

(请注意,
mapCat.SubCategory
应该是一个id字段,您可能知道是哪个字段)。

谢谢Arnold。我将在几个小时内尝试它,并报告它是否工作,是(mapCat.SubCategory是id字段)的查询略有不同,但您的语法是我需要的。现在开始工作了,谢谢