繁体   English   中英

将SQL查询转换为实体框架LINQ查询

[英]Convert sql query to entity framework linq query

我有以下查询

select  distinct (case 
    when object like'%service%' then (object)
    when  host like '%service%' then (host) 
    when  class like '%service%' then (class) 
    when  parameter like '%service%' then (parameter) 
 end), (case 
    when object like'%service%' then 'objet'
    when  class like '%service%' then 'objet_class' 
    when  host like '%service%' then 'host' 
     when  parameter like '%service%' then 'parametre' 
 end) from [dbo].[full] where(object <>'NULL' and class<>'NULL' and parameter<>'NULL' and host <>'NULL')

我想知道如何在实体框架中使用linq查询。

.Contains("x")应该转换为LIKE '%x%'

? : ? :应翻译为CASE WHEN

var q = from f in dbContext.Full 
where !f.object.Equals("NULL") && !f.class.Equals("NULL") && !f.parameter.Equals("NULL") && !f.host.Equals("NULL")
select new {
     f.object.Contains("service") ? f.object :
     f.host.Contains("service") ? f.host :
     f.class.Contains("service") ? f.class :
     f.parameter.Contains("service") ? f.parameter :
     null,
     f.object.Contains("service") ? "object" :
     f.host.Contains("service") ? "host" :
     f.class.Contains("service") ? "object_class" :
     f.parameter.Contains("service") ? "parameter" :
     "N/A"
};

尝试这个:

var temp = 
        from f in context.full
        where f.object != "NULL" && f.class != "NULL" && f.parameter != "NULL"
        select new {
            service =   f.object.Contains("service") ? f.object :
                        f.host.Contains("service") ? f.host :
                        f.class.Contains("service") ? f.class :
                        f.parameter.Contains("service") ? f.parameter,
            serviceType = f.object.Contains("service") ? "object" :
                        f.host.Contains("service") ? "host" :
                        f.class.Contains("service") ? "object_class" :
                        f.parameter.Contains("service") ? "parameter"
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM