2015-09-10 3 views
0

Надеюсь, вы можете мне помочь.Query SQL to Lambda Expression

Я хочу, чтобы преобразовать этот запрос из SQL в лямбда-выражения в C#:

select 
    a.Descripcion 
from 
    pb.MantenimientosTipos a 
where 
    a.activo = 1 and 
    a.idSegmento in (select b.idSegmento 
        from pb.MaquinasRelSegm b 
        where b.idMaquina = 67) 

Как я могу это сделать?

У меня есть два selectList, «a» и «b», selectList «a» - это список из фильтра таблицы b с помощью параметра, а selectList «b» - это список из таблицы, фильтр SelectList «a»

private SelectList a (bool agregarTodo = false) 
{ 
    var segmentos = pb.MaquinasRelSegm.Where(x => x.idMaquina == MaquinaId).Select(x => x.Segmentos).ToList(); 

    if (agregarTodo) 
    { 
     segmentos.Add(new PB.Domain.Entities.Segmentos { idSegmento = 0, Descripcion = "Todos" }); 
    } 

    return new SelectList(segmentos, "idSegmento", "Descripcion"); 
}  

private SelectList b (byte idSegmento, bool agregarTodo = false) 
{ 
    var tipos = pb.MantenimientosTipos.Where(x => x.idSegmento == idSegmento && x.Activo).ToList(); 
    if (agregarTodo) 
    { 
     tipos.Insert(0, new PB.Domain.Entities.MantenimientosTipos { idTipoMTTO = 0, Descripcion = "Todo" }); 
    } 

    return new SelectList(tipos, "idTipoMTTO", "Descripcion") 
} 

Я хочу поставить только один SelectList с этим SQL запроса

Это отношения в SQL SERVER https://drive.google.com/file/d/0BzpCEYwGGpogRGRaOVNXTDBrTWc/view?usp=sharing

+1

пожалуйста, показать код, который вы пытались сделать – Backs

+0

Что вы используете для доступа к базе данных? – Matyas

+0

entity Framework –

ответ

1

Спасибо за диаграмме.

пытаются использовать это (при условии, что рв контекст EF):

var segmentoIds = pb.MaquinasRelSegm 
    .Where(a => a.idMaquina == 67) 
    .Select(a => a.idSegmento) 
    .ToList(); 

var description = pb.MantenimientosTipos 
    .Where(a => a.Activo && segmentoIds.Contains(a.idSegmento)) 
    .Select(a => a.Description); 
+0

спасибо за помощь, я думал попробовать LINQ, но ваш ответ был отличный –

+0

Это LINQ , просто еще один синтаксис. – Matyas