我有一个LINQ to SQL
的MSSQL数据库
我有三张桌子
Requests -> id, string name
Results -> id, requestID, int jumps
Places -> id, resultID, int location
然后,使用输入string
,我需要获得符合以下条件的 ICollectable 或数组或Place
的内容:
每个Request
name
= input
,取其ID。[您只能假设一个]
每个Result
requestID
= ID[from above]
- 取id
每个Place
resultID=
'id [from above]' - 附加到数组进行进一步处理。
我是通过循环所有Results
然后执行另一个LINQ
语句来实现的,但它的速度非常慢[单个请求约为500毫秒!]。 我可以加快速度吗?
谢谢!
编辑:糟糕,我还需要按结果分组。也就是地方列表列表,而每个内部列表包含Result
中的一列。
答案 0 :(得分:3)
您可以使用join关键字在Linq2Sql中执行表连接:
var places = from request in Requests
join result in Results on request.Id equals result.requestID
join place in Places on result.Id equals place.ResultId
where request.name = input
select place;
答案 1 :(得分:2)
像
这样的东西Requests.Where(r => r.name == input).Results.Places.Select();
如果这个太慢,我希望你的数据库需要一些索引。
如果您的模型中没有关系,那么您需要在表上建立一些外键约束来重建模型。