Подзапрос в Linq для сущностей в Silverlight

1

Я хочу преобразовать этот SQL-запрос в LINQ в Entities в моем первом проекте Silverlight, но я не знаю, как, я никогда не работал с Linq:

select * 
from Tipo t,
Unidad u
where t.Clave = @Clave
and t.Equipo = u.Equipo
and u.IDUni in
(select IDUni
from Orden o
where o.IDUni = u.IDUni
and o.Clave = t.Clave)

кто-нибудь мне поможет

  • 0
    Как вы получаете доступ к Entityframework? Вы не можете иметь Entity Model внутри проекта Silverlight
  • 0
    извини но я не совсем понимаю что ты говоришь
Показать ещё 1 комментарий
Теги:
linq
entity-framework
silverlight

3 ответа

2
Лучший ответ

Я пробую это, и оба работают нормально:

ObjectSet<Orden> ordenes = this.ObjectContext.Orden;
ObjectSet<Unidad> unidades = this.ObjectContext.Unidad;
ObjectSet<Tipo> tipos = this.ObjectContext.Tipo;

var query = from t in tipos
            from u in unidades
            where t.Clave == _clave
            where t.Equipo == u.Equipo
            where (from o in ordenes
                   where o.IDUni == u.IDUni
                   where o.Clave == t.Clave
                   select o.IDUni).Contains(u.IDUni)
            select new { t, u };

а также

var query = from t in tipos
            from u in unidades
            from o in ordenes
            where t.Clave == _clave
            where t.Equipo == u.Equipo
            where o.IDUni == u.IDUni
            where o.Clave == t.Clave
            select t;

большое спасибо

McGarnagle и

Aducci

1

Вот перевод вашего SQL-запроса. Есть ли конкретные столбцы, которые вы хотите? Было бы необычно select *

var query = from t in context.Tipo
            from u in context.Unidad
            where t.Clave == clave
            where t.Equipo == u.Equipo
            where (from o in context.Orden
                   where o.IDUni == u.IDUni
                   where o.Clave == t.Clave
                   select o.IDUni).Contains(u.IDUni)
            select new { t, u };
  • 0
    спасибо большое Aducci, давай я проверю
0

Это " Join а затем " Where. Попробуйте что-то вроде этого:

public void DoStuff(IEnumerable<Tipo> t, IEnumerable<Unidad> u, IEnumerable<Orden> o)
{
    string clave = "something";
    var items = t
        .Join(u,                                                 // join to collection "u"
              trow => trow.Equipo,                               // "t" selector
              urow => urow.Equipo,                               // "u" join selector
              (trow, urow) => new { trow = trow, urow = urow })  // result selector
        .Where(item => item.trow.Clave == clave 
                  && o.Where(orow => orow.IDUni == item.urow.IDUni 
                         && orow.Clave == item.trow.Clave)
                     .Select(orow => orow.IDUni)
                     .Contains(item.urow.IDUni)
        );
}
  • 0
    спасибо большое McGarnagle, позвольте мне проверить
  • 0
    представьте, что это должно быть уроу => уроу. Унидад
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню