2016-03-31 22 views
3

Bu yolla bir sorgu yapabilir miyim?Nasıl Yapılır C# Linq Üyelik Eşanlamlılar Nerede Olduğu

var result = from us20 in Us20Repository.GetAll() 
      join pj01 in Pj01Repository.GetAll() on new 
      { 
       User = 
        (us20.company == "kodofisi" ? 
         us20.personalId : 
         (
          us20.company == "coca-cola" ? 
          (
           (from pj02 in Pj02Repository.GetAll() 
           where 
            pj02.id == us20.id && 
            pj02.personalId == us20.personalId 
           select new 
           { 
            pj02.id 
           }).First().ToString() 
          ) : 
          "" 
         ) 
        ), 
       ACTIVE = "X" 
      } equals new { User = pj01.name, ACTIVE = pj01.active } 
      select new 
      { 
       Name = pj01.id 
      }; 

Bu, birleşim halinde çalışmaz, Seçim kullanılarak başka nasıl yapılabilir? Veri gelmiyor.

ilgili sorgu çalışır geçerli:

 
/*bla bla*/ FROM us20 US20 
INNER JOIN pj01 PJ01 ON PJ01.PJID = 
( 
    CASE WHEN (US20.company = "kodofisi") 
    THEN 
     US20.personalId 
    WHEN 
     (US20.BKNM = "coca-cola") 
    THEN 
     (
      SELECT dataId FROM pj02 WHERE id = US20.id AND personalId = US20.personalId 
     ) END 
) AND PJ01.active = "X" 

cevap

0

bu soruna neden olan buysa bilmiyorum ama belki FirstOrDefault (kullanmayı deneyebilirsiniz) yerine pasajları Birinci() ait :

(from pj02 in Pj02Repository.GetAll() 
          where 
           pj02.id == us20.id && 
           pj02.personalId == us20.personalId 
          select new 
          { 
           pj02.id 
          }).First().ToString() 

Bu tür bir değişiklik, sahip olduğum benzer bir sorunu çözdü.