2016-09-16 8 views
0
個別

に参加し2台 TABLE_ALINQのは、私が持っている

id col_A col_B Col_C DataAmt value 
1 a  b  c  1  1 
2 a  b  c  1  1 
3 a  b  c  2  2 
4 a  b  c  2  2 
5 a  b  c  2  2 

TABLE_B

id col_A col_B col_C 
1 a  b  c 
2 a  b  c 
3 a  b  c 

私のLINQクエリ私のI 2つのフィールド、のための1のためのValue_A

from table_B in db.Table_B 
join table_A in db.table_A 
on new 
{ 
    col_A = table_B.col_A, 
    col_B = table_B.col_B, 
    col_C = table_B.col_C, 
} 
equals new 
{ 
    col_A = table_A.col_A, 
    col_B = table_A.col_B, 
    col_C = table_A.col_C, 
} 
select table_A 

および値_B
テーブルBからテーブルAを3つのコラムで照会するとcol_Acol_Bcol_CDataAmtに別個を取らなければならないI、1より大きいTABLE_Aの値値から COLはフィールドValue_A等に配置されるべきですValue_B
私は別の値と値の分離を取ることはできません。

+0

をあなたがあなたの答えを書き換えることはできますか?それを理解するのはちょっと複雑です。 –

答えて

0

たぶん、このような何か、あなたが望むように、select句を変更:

(from table_B in db.Table_B 
join table_A in db.table_A 
on new 
{ 
    col_A = table_B.col_A, 
    col_B = table_B.col_B, 
    col_C = table_B.col_C, 
} 
equals new 
{ 
    col_A = table_A.col_A, 
    col_B = table_A.col_B, 
    col_C = table_A.col_C, 
} 
select new 
{ 
    col_A = table_A.value > 1 ? table_A.value : table_A.col_A, 
    col_B = table_A.value > 1 ? table_A.Col_B : table_A.value: , 
    col_C = table_A.col_C, 
    DataAmt = table_A.DataAmt 
}).Distinct(); 
0
static void Main(string[] args) 
    { 
     List<TableA> tableA = new List<TableA> 
     { 
      new TableA { Id = 1, A = "a", B = "b", C = "c", DataAmt = 1, Value = 1 }, 
      new TableA { Id = 2, A = "a", B = "b", C = "c", DataAmt = 1, Value = 1 }, 
      new TableA { Id = 3, A = "a", B = "b", C = "c", DataAmt = 2, Value = 2 }, 
      new TableA { Id = 4, A = "a", B = "b", C = "c", DataAmt = 2, Value = 2 }, 
      new TableA { Id = 5, A = "a", B = "b", C = "c", DataAmt = 2, Value = 2 }, 
     }; 

     List<TableB> tableB = new List<TableB> 
     { 
      new TableB { Id = 1, A = "a", B = "b", C = "c" }, 
      new TableB { Id = 2, A = "a", B = "b", C = "c" }, 
      new TableB { Id = 3, A = "a", B = "b", C = "c" }, 
     }; 

     var result = tableA.Where(x => x.Value > 1 && tableB.Any(y => y.A == x.A && y.B == x.B && y.C == x.C)).Select(x => new 
     { 
      A = x.A, 
      B = x.B, 
      C = x.B, 
      DataAmt = x.DataAmt 
     }).Distinct().ToList(); 
    } 
関連する問題