0

У меня есть требование написать запрос с предложением «где в». Я использую рамки сущности 4.где в разделе в сущности famework

My SQL запрос:

select ITEMNMBR, locncode, qtyonhnd, atyalloc 
from dbo.iv00102 
where ITEMNMBR IN (
        SELECT cmptitnm 
        from dbo.bm00111 
        where itemnmbr == bomItem) 
AND LOCNCODE = 'MEMPHIS' 

Нужна Somthing запрос так:

public static Func<DBEntities, string, IQueryable<IV00102>> compiledMemphisQuery = 
     CompiledQuery.Compile((DBEntities ctx, string bomNumber) => 
      from items in ctx.IV00102 
      where items.ITEMNMBR in (
             from orders in ctx.bm00111 
             where orders.itemnmbr == bomItem 
             select orders.cmpitnm) 
      and items.locncode == "Memphis" 
      select items); 

ответ

1

Используйте Содержит метод расширения запроса. Он должен работать:

public static Func<DBEntities, string, IQueryable<IV00102>> compiledMemphisQuery = 
    CompiledQuery.Compile((DBEntities ctx, string bomNumber) => 
     from items in ctx.IV00102 
     where (
            from orders in ctx.bm00111 
            where orders.itemnmbr == bomItem 
            select orders.cmpitnm) 
     and items.locncode == "Memphis" 
     select items).Contains(items.ITEMNMBR); 
+0

Во всяком случае, это ваш запрос, я думаю, вы можете сделать соединение или создать связь между двумя объектами и использовать SelectMany. – ivowiblo

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