在没有循环的情况下,我需要哪个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 = inputRequest取其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;

在没有循环的情况下,我需要哪个LINQ表达式呢?

类似

Requests.Where(r => r.name == input).Results.Places.Select();

如果这太慢,那么我希望您需要在数据库上添加一些索引。

如果你的模型中没有关系,那么你需要在你的表上建立一些外键约束,然后重建你的模型