2013-03-30 3 views
0

I`m с помощью Entity Framwork и у меня есть следующий прогноз:Linq для лица - Регистрация с несколько contidions

 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" 

Как я могу это сделать? Все экзамены, которые я видел, относятся к анонимным типам, и это не хорошо для меня. Благодаря

ответ

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, вы, вероятно, знаете, что).

+0

Спасибо Арнольд. Я попробую его через пару часов и сообщите, если он работает, и да (mapCat.SubCategory - это поле id) – Ofir

+0

Запрос немного отличается, но ваш синтаксис - это то, что мне нужно. Теперь он работает, спасибо – Ofir

Смежные вопросы