2013-03-10 2 views
-1

У меня есть две таблицы Таблица 1Linq группа заявлением

ID1 Col1_1 
1  "123" 
2  "12331" 

Table2 (FK1 = ID1)

ID2 FK1 Col2_1  Col2_2 
1  1  "11"  "4.04.2012" 
2  1  "21"  "5.06.2012" 
3  1  "31"  "2.04.2012" 
4  2  "41"  "5.04.2012" 
5  2  "51"  "1.02.2012" 

мне нужно присоединиться к этой таблицы, заказ по дате (Col2_2) и группе FK1. Результат должен выглядеть

ID2 FK1 Col2_1  Col2_2  Col1_1 
2  1  "21"  "5.06.2012" "123" 
4  2  "41"  "5.04.2012" "12331" 

Является ли это сделать Возможное такой запрос? Мне нужно иметь этот запрос в (из формы ... join ... group by ... select ...).

+1

[Что вы пробовали?] (Http://www.whathaveyoutried.com) –

+0

Я пытался сделать что-то вроде от t2 в Table2 группы t2 по t2.FK1 в группу от гр в группе join t1 в таблице 1 ... выберите новый {...}; Но результат имеет дубликаты. – Sanya530

+0

Зачем стоит «21» для 'Col2_1'? –

ответ

2
var query = from t1 in Table1 
      join t2 in Table2 on t1.ID1 equals t2.FK1 
      group new { t1, t2 } by t1.ID1 into g 
      let i = g.OrderByDescending(e => DateTime.Parse(e.t2.Col2_2)) 
        .FirstOrDefault() 
      select new 
      { 
       ID2 = i.t2.ID2, 
       FK1 = i.t2.FK1, 
       Col2_1 = i.t2.Col2_1, 
       Col2_2 = i.t2.Col2_2, 
       Col1_1 = i.t1.Col1_1 
      }; 
var results = query.ToList(); 

Я протестировал его с помощью LINQ to Objects, и ваши данные образца и результаты будут такими, как ожидалось.