将SQL Server查询转换为Linq查询

sidd123
select c.Name, d.First_Name, COUNT(c.Name) as qty 
from order_product_s a 
    inner join Order_s b on a.Order_Id = b.Id
    inner join Product_s c on a.Product_Id = c.Id 
    inner join Customer_s d on b.Customer_Id = d.Id 
where b.Customer_Id = 4869 
group by c.Name, d.First_Name
斯蒂芬·斯蒂格(Stefan Steiger)

像这样的东西:

int __UserId = 4869;

var results = 
( 
    from t in 
    (
        from a in Repo.order_product_s 
        from b in Repo.Order_s 
             .Where(bb=> bb.id == a.Order_Id)
        from c in Repo.Product_s 
             .Where(cc => cc.Id == a.Product_Id)
        from d in Repo.Customer_s  
             .Where(dd => dd.Id == b.Customer_Id)

        where b.Customer_Id == __UserId 

        select new
        {
             Name = c.Name
            ,First_Name = d.First_Name
        }

    )
    group t by new { t.Name , t.First_Name } into g
    select new 
    { 
         Name  = g.Key.Name 
        ,First_Name=g.Key.First_Name
        ,qty = g.Count( x => x.Name != null)
    }

).ToList();

或更紧凑:

var results = 
( 
    from a in Repo.order_product_s 
    from b in Repo.Order_s 
         .Where(bb=> bb.id == a.Order_Id)
         // .DefaultIfEmpty() // <== makes join left join         
    from c in Repo.Product_s 
         .Where(cc => cc.Id == a.Product_Id)
         // .DefaultIfEmpty() // <== makes join left join         
    from d in Repo.Customer_s  
         .Where(dd => dd.Id == b.Customer_Id)
         // .DefaultIfEmpty() // <== makes join left join         

    where b.Customer_Id == __UserId 

    select new
    {
         Name = c.Name
        ,First_Name = d.First_Name
    }
    into t group t by new { t.Name , t.First_Name } into g
    select new 
    { 
         Name  = g.Key.Name 
        ,First_Name=g.Key.First_Name
        ,qty = g.Count( x => x.Name != null)
         // Or like this
        // ,qty = g.Select(x => x.Name).Where(x => x != null).Count()
        // and if you ever need count(distinct fieldname)
        //,qty = g.Select(x => x.GroupName).Where(x => x != null).Distinct().Count()
    }

)
// .OrderBy(t => t.Name).ThenBy(t => t.First_Name).ThenBy(t => t.qty) // Order in SQL 
.ToList()
// .OrderBy(t => t.Name).ThenBy(t => t.First_Name).ThenBy(t => t.qty) // Order in .NET
;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将SQL查询转换为LINQ查询

来自分类Dev

将Linq表达式转换为SQL Server查询

来自分类Dev

将包含GROUP BY的SQL Server查询转换为NHibernate LINQ

来自分类Dev

将SQL查询转换为LINQ

来自分类Dev

将SQL查询转换为LINQ语句

来自分类Dev

将查询转换为SQL Server语法

来自分类Dev

将Oracle查询转换为SQL Server?

来自分类Dev

将SQL子查询转换为Linq查询

来自分类Dev

将SQL分组查询转换为LINQ查询

来自分类Dev

将此LINQ表达式转换为SQL Server查询

来自分类Dev

将PostgreSQL查询转换为SQL Server查询

来自分类Dev

将SQL Server 2008查询转换为bcp查询

来自分类Dev

将SQL Server查询转换为SQLite查询

来自分类Dev

将 mysql 查询转换为 sql server 2000 的 mssql 查询

来自分类Dev

EF Linq无法将SQL查询转换为正确的linq

来自分类Dev

SQL Linq查询转换为RavenDB Linq查询

来自分类Dev

SQL Linq查询转换为RavenDB Linq查询

来自分类Dev

简单的Sql查询转换为Linq To Sql

来自分类Dev

通过查询将组转换为linq

来自分类Dev

将存储过程转换为LINQ查询

来自分类Dev

将linq查询转换为ObservableCollection

来自分类Dev

LINQ:将.Single()转换为查询符号

来自分类Dev

将SqlServer查询转换为LINQ

来自分类Dev

通过查询将组转换为linq

来自分类Dev

将Linq查询转换为IEnumerable MVC

来自分类Dev

将复杂查询转换为 linq

来自分类Dev

使用sum和group by将sql查询转换为linq

来自分类Dev

全字匹配查询:将sql转换为linq

来自分类Dev

区分将SQL查询转换为Linq(c#)