sql - 如何翻译为 Linq 表达式

标签 sql linq lambda sql-to-linq-conversion

我有以下 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.ParkFeatureParksParkFeaturePark.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/

相关文章:

mysql - 如何在 SUM 生成的列上找到 MAX 值

c# - LINQ 选择多个值

c# - LINQ to Entities 无法识别方法 'System.Object GetValue(...)'

c# - 如何在 Devforce 中组合 2 个不同类型的 c# 表达式?

mysql - 如何在Where子句中使用TimeDiff函数

sql - 恢复的三个阶段 : the analysis phase, 重做阶段,最后是撤消阶段

MySQL:是否可以为两个不同的表列创建外键?

c# - 将 List<Guid> 转换为 List<Guid? >

c# - Func<T,TResult> 是如何工作的?

c# - 将属性传递给 C#、EF 中的函数