我有以下 sql 命令,但无法转换为 linq
select Distinct(fp.Parks_Id)
from ParkFeaturePark fp
Inner Join Parkfeatures feat on fp.ParkFeatures_Id = feat.Id
Inner Join Parks p On fp.Parks_Id = p.Id
where p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =1 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =2 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =31 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =42 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =106 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =118 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =4 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =6 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =10 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =18 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =22 )
And p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =46 )
这里的问题是..我必须使用用户选择的组合..示例是
p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =1 )
AND p.Id In (Select Parks_Id from ParkFeaturePark where ParkFeatures_Id =4 )
或用户选择的任何其他组合..
谢谢回复
最佳答案
假设您有导航属性 Park.ParkFeatureParks
和 ParkFeaturePark.Parkfeatures
。 (否则将能够创建它们)。然后你可以这样做:
int[] featureIds = new { 1, 2, 31, 42, 106, 118, .. };
var query = from p in context.Parks
where p.ParkFeatureParks
.SelectMany(pfp => pfp.Parkfeatures)
.All(feature => featureIds
.Contains(id => feature.ParkFeatures_Id))
select p.Parks_Id;
关于sql - 如何翻译为 Linq 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17017798/