2

問題:查找使用實體框架(SQL查詢LINQ)

我試圖使用實體框架遺憾的是我沒有找到辦法做到查找跨2個表,但我有SQL查詢該做什麼,我想

SQL查詢

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 2012-03-07 02:40:24

+0

我無法通過您提供的鏈接找到解決方案,即使我試過這個工具(LINQPAD)。沒有運氣.... :( – mattnz 2012-03-07 02:59:12

回答

4

一加入(您的查詢使用SQL隱式聯接語法)看起來Linq中非常相似的實體:

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(); 

不得不採取猜你有你的問題一個錯字所以它並不清楚是否可以歸結爲LookupTablelookupTablePerUnit

+0

謝謝:)你救了我的夜晚 – mattnz 2012-03-07 05:31:14

2

這樣的事情range屬性(希望你在使用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實例。請注意,實體框架可能會錯誤地將您的實體名稱複數化,因此LookupTableLookupTablePerUnit實際上可能與您的ObjectContext(和lookupTablePerUnit可能會大寫)中的LookupTableslookupTablePerUnits類似。