我正在尝试使用Entity Framework查找交叉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
如果@ Value1 = 6则结果= 52
以下是使用此查询的两个表格(lookupTable&amp;&amp; LookTablePerUnit)的屏幕截图
(SELECT * FROM [DB].[dbo].[lookupTablePerUnit] p1 , [DB].[dbo].[LookupTable] p2
where p1.LookupTableID = p2.ID)
答案 0 :(得分: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();
不得不猜测range
属性中你的问题是否存在拼写错误,因此不清楚它是否归因于LookupTable
或lookupTablePerUnit
答案 1 :(得分: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
实例。LookupTable
请注意,实体框架可能会错误地复制您的实体名称,因此LookupTablePerUnit
和LookupTables
实际上可能类似lookupTablePerUnits
和ObjectContext
lookupTablePerUnit
(和{{} 1}}可以大写。)