2016-04-11 15 views
0

基本的には、customerIdとfieldIdに基づいてレコードが見つかった場合、SA_CUSTOMER_ALLOCでDestinationCustomerListを確認したい場合は優先度else優先度= 1を返します。適切に(のみ合致するレコードを返すとSA_CUSTOMER_ALLOCは、「オブジェクトrefereneceエラーを」投げ任意のレコードを持っていない場合、どのようにこれを処理する。LINQの複数の条件で外部結合を残しました

var Query = (from p in DestinationCustomerList 
        join p2 in Context.SA_CUSTOMER_ALLOC on new { f1 = p.CustomerId, f2 = p.FieldId } equals new { f1 = p2.CUSTOMER_ID, f2 = p2.FIELD_ID } 
         into temp 
        from x in temp.DefaultIfEmpty() 
        where x.TAG_ID == TagId && x.REGION_ID == RegionId 
        select new { p.CustomerId,p.FieldId, Priority = x == null ? 1 : x.PRIORITY }).ToList(); 
+0

可能DUPLを試みる代わりに、 [LINQ to SQL - 複数の結合条件を持つ外部結合](http://stackoverflow.com/questions/1122942/linq-to-sql-left-outer-join-with-multiple-join-conditions) –

答えて

0

Priority = x == null ? 1 : x.PRIORITYPriority = p2 == null ? 1 : p2.PRIORITY

var Query = (from p in DestinationCustomerList 
      join p2 in Context.SA_CUSTOMER_ALLOC 
       on new 
       { f1 = p.CustomerId, f2 = p.FieldId } 
        equals new 
       { f1 = p2.CUSTOMER_ID, f2 = p2.FIELD_ID } 
       into temp 
       from x in temp.DefaultIfEmpty() 
       let priority = p2 == null ? 1 : p2.PRIORITY 
       where x.TAG_ID == TagId && x.REGION_ID == RegionId 
       select new { p.CustomerId,p.FieldId, Priority = priority }).ToList(); 
関連する問題