2

Проблема:Поиск с помощью Entity Framework (SQL запросов к LINQ)

Я пытаюсь сделать кросс поиска 2 таблицы с помощью Entity Framework, к сожалению, я не смог найти путь, но у меня есть SQL запрос, который делает то, что я хочу

SQL Query

select top(1) p1.Percentage 
from LookupTable p1 , [lookupTablePerUnit] p2 
where p2.[LookupValue] <= @Value1 and p1.ID=p2.[LookupID] 
order BY pr.range DESC 

если @ Значение1 = 6, то результат = 52

Вот скриншот из двух таблиц (LookupTable &LookTablePerUnit), используя этот запрос

 (SELECT * FROM [DB].[dbo].[lookupTablePerUnit] p1 , [DB].[dbo].[LookupTable] p2
 where p1.LookupTableID = p2.ID)

http://s15.postimage.org/m80zvn4mx/Captur2e.png

Я пытаюсь найти способ решить эту проблему, так как прошлой ночью :( Я буду признателен, если кто-нибудь может помочь мне

+1

Аналогичные вопросы были заданы по адресу http://stackoverflow.com/questions/296972/sql-to-linq-tool и http://stackoverflow.com/questions/1339732/convert-sql-to-linq-to -SQL. – David

+0

Я не смог найти решение по ссылкам, которые вы предоставили, даже я попробовал этот инструмент (LINQPAD). Не повезло .... :( – mattnz

ответ

4

A join (ваш запрос использует синтаксис неявного соединения для SQL) будет очень похож на Linq на Entities:

var query = from p1 in context.LookupTable 
      join p2 in context.lookupTablePerUnit on p1.ID equals p2.LookupID 
      where p2.LookupValue <= Value1 
      orderby p1.range descending 
      select p1.Percentage; 

var result = query.FirstOrDefault(); 

бы сделать предположение на range собственности у вас есть опечатка в вашем вопросе поэтому его не ясно, можно ли отнести к LookupTable или lookupTablePerUnit

+0

спасибо :) ты спас мою ночь – mattnz

2

Что-то вроде этого (надеюсь, что вы используете C#):

int value1 = 6; 
int percentage = (from p1 in context.LookupTable 
       from p2 in context.lookupTablePerUnit 
       where p2.LookupValue <= value1 and p1.ID=p2.LookupID 
       orderby p2.range descending 
       select p1.Percentage).First(); 

Где context является вашим примером ObjectContext. Обратите внимание, что Entity Framework может ошибочно плюрализовать имена ваших объектов, поэтому LookupTable и LookupTablePerUnit могут фактически быть чем-то вроде LookupTables и lookupTablePerUnits в вашем ObjectContextlookupTablePerUnit могут быть капитализированы).

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

  • Нет связанных вопросов^_^