2012-05-03 12 views
0

以下のSQLをLambda Expressionに転記しようとしています。ベストプラクティスを使用してSQLクエリをLambdaクエリに変換する

declare @codigoGrupo int 
declare @nomeModelo varchar(20) 

set @codigoGrupo = 8 -- null 
set @nomeModelo = '%segundo%' 

select g.dc_nome, m.dc_nome 
from hlp.grupo_solicitacao g 
    left join hlp.modelo_solicitacao m on g.codigo_grupo_solicitacao = m.codigo_grupo_solicitacao 
    where 1=1 
    and (g.codigo_grupo_solicitacao = @codigoGrupo or @codigoGrupo is null) 
    and (m.dc_nome like @nomeModelo or @nomeModelo is null) 

これはこれですか?

ありがとうございました。

=)

+0

エンティティへのLINQ(Entity Frameworkの)のために、このですか? –

+0

linq2sql用ですね。 – ykatchou

答えて

1

私は本当にラムダ式では不思議に思う。このような

int? codigoGrupo =8; 
string nomeModelo="segundo"; 
var result= (
    from g in grupo_solicitacao 
    from m in modelo_solicitacao 
     .Where(a=>a.codigo_grupo_solicitacao=g.codigo_grupo_solicitacao) 
     .DefaultIfEmpty() 
    where 1==1 
    && (g.codigo_grupo_solicitacao==codigoGrupo || !codigoGrupo.HasValue) 
    && (m.dc_nome.Contains(nomeModelo) || nomeModelo==null) 
    select new{g.dc_nome, m.dc_nome} 
); 
+0

実際にはい。しかし、あなたの解決策は良いです。 ありがとうございます。 –

+0

答えがうまくいけばそれを受け入れることを検討するかもしれません – Arion

0

は何か:これと非常にクリーンなようにそれを行うには簡単です

int? codigoGrupo = 8; 
string nomeModelo = "segundo" 

bool filterCodigoGrupo = codigoGrupo.HasValue; 
bool filterNomeModelo = !String.IsNullOrEmpty(filterNomeModelo); 

var list = context.grupo_solicitacao 
    .Where(o => 
    (1 == 1) 
    && 
    (!filterCodigoGrupo || o.codigo_grupo_solicitacao == codigoGrupo.Value) 
    && 
    (!filterNomeModelo || o.modelo_solicitacao.dc_nome.Contains(nomeModelo)) 
) 
    .Select(o => new { codigo = o.dc_nome, model = o.modelo_solicitacao.dc_nome }) 
    .ToList(); 
関連する問題