2016-09-16 10 views
0

У меня есть две таблицы 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 запрос

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 

в моей, ибо я два поля, одно для Value_A и Value_B
при запросе из таблицы B в таблицу A с тремя колонками. я должен принять отличие от col_a, col_B, col_C и DataAmt, значение из значения Col в TABLE_A, которое больше, чем 1 должны быть помещены в поле Value_A и другие в Value_B.
Я не могу принимать разные значения и разделять значения.

+0

Вы можете переписать ваш ответ? Это немного сложно понять. –

ответ

0

Может быть что-то вроде этого, изменить выберите пункт, как вы хотите:

(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(); 
    } 
Смежные вопросы