【问题标题】:Convert union all and Subquery SQL query to LINQ将 union all 和 Subquery SQL 查询转换为 LINQ
【发布时间】:2016-05-23 06:41:07
【问题描述】:

对将下面的 SQL 转换为 linq 查询有什么帮助吗?

SELECT *
FROM BaseCategory
WHERE
    Id = (SELECT ParentId FROM BaseCategory WHERE Id = 10)
UNION ALL
SELECT *
FROM BaseCategory
WHERE
    ParentId = (SELECT ParentId FROM BaseCategory WHERE Id = 10)

【问题讨论】:

标签: sql-server linq c#-4.0 linq-to-sql


【解决方案1】:

给你:

var query = (from c in db.BaseCategory 
            where c.Id = (From c1 in db.BaseCategory 
                          where c1.Id == 10 select c1.ParentId) 
            select c)
            .Concat
            (from c in db.BaseCategory 
            where c.ParentId = (From c1 in db.BaseCategory 
                                where c1.Id == 10 select c1.ParentId) 
            select c)

【讨论】:

  • 为什么选择 Concat,为什么不像 OP 所期望的那样联合
  • 因为Concat 是SQL 中UNION ALL 的LINQ 等价物。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
相关资源
最近更新 更多