在没有循环的情况下,我需要哪个LINQ表达式呢?
本文关键字:LINQ 表达式 循环 情况下 | 更新日期: 2023-09-27 18:14:59
我有一个与LINQ to SQL
的MSSQL数据库。
我有三张桌子。Requests -> id, string name
Results -> id, requestID, int jumps
Places -> id, resultID, int location
然后,使用输入string
,我需要得到一个ICollectable或数组或Place
的满足以下条件的东西:
每个具有name
= input
的Request
取其ID。[你可以假设只有一个]
每个requestID
= ID[from above]
的Result
取其id
。
每个具有resultID=
'id[from above]' -的Place
追加到数组中以作进一步处理
我通过循环所有Results
然后执行另一个LINQ
语句来实现它,但是它非常慢[单个请求大约500毫秒!]。我能让它更快吗?
谢谢!
编辑:哎呀,我还需要按结果分组。也就是位置列表的列表,而每个内部列表包含来自Result
的一列。
可以使用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;
类似
Requests.Where(r => r.name == input).Results.Places.Select();
如果这太慢,那么我希望您需要在数据库上添加一些索引。
如果你的模型中没有关系,那么你需要在你的表上建立一些外键约束,然后重建你的模型