2015-11-18 1 views
-2

Как написать следующий запрос с Linq в C#?C# - Группировка по двум пунктам в Linq

SELECT MAX(A2.LINHA_PLANILHA) 
FROM MD_IMP_FORCA_VENDA_DADOS_A2 A2 
WHERE A2.LINHA <> '0' 
    AND TRIM(A2.SETORES) IS NOT NULL 
    AND A2.LINHA_PLANILHA <> 1 
    AND USUARIO = V_USUARIO 
GROUP BY A2.LINHA, A2.BRICK 
HAVING COUNT(A2.BRICK) > 1 AND COUNT(DISTINCT A2.SETORES) > 1; 

Я думал сделать это:

var result = from r in dataTable.AsEnumerable() 
where r.Field<string>(1) != "0" 
    && r.Field<string>(2).Trim() != null 
    && r.Field<Int32>(0) != 1 
group r by new {Linha = r.Field<string>(1), Brick = r.Field<string>(3) } into temp 
where temp.Count() > 1 
select new { MaxLinha = (from r2 in temp select r2.Field<Int32>(0)).Max()}; 

Но я не знаю, как поставить два Графы предложения HAVING в Linq запрос.

Любая помощь будет оценена по достоинству.

Благодаря

ZAGO

+2

один вопрос: Что вы пробовали? –

+0

@Thomas спрашивает, действительно ли вы пробовали какие-либо выражения LINQ? Обычно этот форум предназначен для выяснения причин, почему конкретный код не работает. –

+0

Извините за мое замешательство и мою ошибку ... Я редактировал свой пост тем, что я собираюсь сделать. – Zago

ответ

1

Возможно:

var query = db.MD_IMP_FORCA_VENDA_DADOS_A2 
    .Where(x => x.LINHA != "0" 
      && x.SETORES != null 
      && x.SETORES.Trim() != "" 
      && x.LINHA_PLANILHA <> 1 
      && x.USUARIO = x.V_USUARIO 
    ) 
    .GroupBy(x => new { x.LINHA, x.BRICK }) 
    .Where(g => g.Count() > 1 && g.Select(x => x.SETORES).Distinct().Count() > 1) 
    .Select(g => g.Max(x => x.LINHA_PLANILHA)); 

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

  • Нет связанных вопросов^_^