2010-12-08 2 views
0

Мне нужно, чтобы преобразовать ниже запрос SQL в запрос LinqПреобразование запроса SQL в Linq к инструкции SQL

select * 
from bancos 
where codigobanco in 
    (select distinct codigobanco 
    from headerarquivo 
    where (MONTH(datahorageracao)=12) and (YEAR(datahorageracao)=2010)) 

Как я мог сделать, чтобы преобразовать этот запрос SQL в запросе Linq?

ответ

2

при условии, что datahorageracao является DateTime, которого не выкладываю свойства или модель предметной области, но хочу, чтобы вы хотите что-то вроде этого:

from banco in bancos 
let queryauxiliar = (from arquivo in headerarquivo where (arquivo.datahorageracao.Month = 12) && arquivo.datahorageracao.Year = 2010 select arquivo.codigobanco) 
where queryauxiliar.Any((val)=>banco.codigobanco == val.codigobanco) 
select new Banco() 
{ 
    NomeProp = banco.valor 
} 
+0

Я получил его с помощью Linq к сущности \t уага BANCOS = (с га в ouroDB.HeaderArquivoes \t \t \t \t \t .гда (ч => h.DataHoraGeracao.Month == dtpGeracao.Value.Month) \t \t \t \t \t .где (ч => h.DataHoraGeracao.Year == dtpGeracao.Value.Year) \t \t \t \t БЛ в ouroDB.Bancos \t \t \t \t. Где (b => b.CodigoBanco.Contains (ha.CodigoBanco)) \t \t \t select bc) .Distinct(). OrderBy (b => b.NomeBanco); – Ederaldo 2010-12-09 17:32:16

1

Предполагая datahorageracao имеет тип DateTime.Two различные способы вы можете написать LINQ код первых, используя lambda expressions и второй, используя query expression синтаксис либо способ работает -

//Lambda Expression way get distinct codigobanco... 
var codigobancolist =Context.headerarquivo.Where(c=>c.datahorageracao.Month ==12 && c.datahorageracao.Year==2010).Select(c=>c.codigobanco).Distinct(); 

//Query Expression way to get actual data... 
    var data= from b in bancos 
       where b.codigobanco.Contains(codigobancolist) 
       select b; 
0
var banco = from c in bancos 
      where headerarquivos 
        .Select(o => o.codibanco) 
        .Where(o.MONTH(datahorageracao)=12) and (o.YEAR(datahorageracao)=2010)) 
        .Contains(c.codibanco) 
      select c; 

Довольно уверен, что должен делать я т.

+1

Вам нужно переместить `Select (o => o.codibanco)` одна строка вниз – 2010-12-08 17:57:51

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