2014-10-16 2 views
2

Я пытаюсь преобразовать ниже запроса в LINQновообращенной группы по запросу в Linq

select ta.id, ta.name, min(tb.id) from tableA ta 
left join tableB tb on tb.fkid=ta.id 
group by ta.id, ta.name 

Я попытался ниже

var query = (from tableA in tableARepository.AsQueryable() 
      join tableB in tableBRepository.AsQueryable() on 
       tableA.Id equals tableB.fkid 

        group grp by new {tableA.Id, tableA.Name } into groupedCol 
        select new 
        { 
         Id = groupedCol.Key.Id, 
         Name = groupedCol.Key.Name, 
         fkId = grouppedCol.Min // cant get column fkid from tableB 

        } 

      ); 

Я не в состоянии получить Min колонок fkid из tableB

Что здесь отсутствует или как я могу это исправить?

ответ

1

Вы должны быть в состоянии получить результаты, которые вы ищете, без использования Join или GroupBy:

var restrictTo = new[] {1, 2}; 
var query = tableARepository.AsQueryable() 
    // I want to add where clause like tableA.Id in (1,2) 
    .Where(a => restrictTo.Contains(a.Id)) 
    .Select(a => new { 
     Id = a.Id 
    , Name = a.Name 
    , FkId = tableBRepository.AsQueryable().Min(b => b.fkid=a.id) 
    }); 
+0

Я хочу добавить where where where tableA.Id в (1,2) .. как я могу добавить его – Happy

+0

Я получаю исключения, потому что столбец Id равен целому числу, поэтому я попытался сделать это a => restrictTo.Contains (a.Id.ToString()) – Happy

+0

@Happy 'restrictTo' состоит из' int 'тоже, поэтому' ToString' не обязательно. Какое исключение вы получаете? – dasblinkenlight

1

Я думаю, что вы ищете GroupJoin

from tableA in tableARepository.AsQueryable() 
join tableB in tableBRepository.AsQueryable() on 
tableA.Id equals tableB.fkid into tb 
select new 
     { 
      Id = tableA.Id, 
      Name = tableA.Name, 
      fkId = tb.Min(x => x.id) 
     } 
+0

так вы имеете в виду не будет никакого group by clause в linq? – Happy

+0

Выполняет ли это левое соединение? – juharr

+0

нет, это не так. из документации: GroupJoin: _It связывает каждый элемент из первой коллекции с набором коррелированных элементов из второго набора ._ –

Смежные вопросы