C# 在没有循环的情况下,我需要哪个LINQ表达式?
C# 在没有循环的情况下,我需要哪个LINQ表达式?,c#,asp.net,linq-to-sql,C#,Asp.net,Linq To Sql,我有一个MSSQL数据库,具有LINQ to SQL 我有三张桌子。 请求->id,字符串名称 Results->id、requestID、int跳跃 Places->id、resultID、int-location 然后,使用一个输入字符串,我需要得到一个ICollectable或数组,或者满足以下条件的Place: 每个请求具有名称=输入,获取其ID。[您可以假设只有一个请求具有] 每个结果都有请求ID=ID[来自上面]-获取其ID 每个Place都有resultID='id[来自上面]-附
我有一个MSSQL数据库,具有
LINQ to SQL
我有三张桌子。
请求->id,字符串名称
Results->id、requestID、int跳跃
Places->id、resultID、int-location
然后,使用一个输入
字符串
,我需要得到一个ICollectable或数组,或者满足以下条件的Place
:
每个请求
具有名称
=输入
,获取其ID。[您可以假设只有一个请求具有]每个
结果
都有请求ID
=ID[来自上面]
-获取其ID
每个
Place
都有resultID=
'id[来自上面]-附加到数组以进行进一步处理。我通过循环所有
结果
,然后执行另一个LINQ
语句来实现,但速度非常慢[单个请求大约500毫秒!]我可以再快一点吗?谢谢大家!
编辑:哎呀,我还需要按结果分组。又名一个位置列表,而每个内部列表包含一列来自
Result
类似的内容
Requests.Where(r => r.name == input).Results.Places.Select();
如果这太慢了,那么我希望您的数据库上需要一些索引
如果模型中没有关系,则需要在表上建立一些外键约束,然后重新生成模型。类似的内容
Requests.Where(r => r.name == input).Results.Places.Select();
如果这太慢了,那么我希望您的数据库上需要一些索引
如果模型中没有关系,则需要在表上建立一些外键约束,然后重新生成模型。可以使用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;
可以使用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;
您将如何用SQL编写此查询?(提示:它涉及连接)。不管是好是坏,LINQ与SQLDQL的映射相当接近,因此从这种方法来看可能会有所启发?(提示:它涉及连接)。不管是好是坏,LINQ与SQL DQL的映射相当接近,因此从这种方法来看它可能会有所启发。OP希望
名称
与输入
匹配,而不是id
我还需要它按结果
分组。OP希望名称
与输入
匹配,不是id
我还需要它按结果进行分组。