繁体   English   中英

将SQL转换为LINQ to SQL

[英]Convert SQL to LINQ to SQL

我有SQL查询

with c as (
  select  categoryId,parentId, name,0 as [level]
  from task_Category b 
  where b.parentId is null
    union all
  select b.categoryId,b.parentId,b.name,[level] + 1
  from task_Category b join c on b.parentId = 
    c.categoryId)
select name,[level],categoryId,parentId 
  as item 
from c

我想将它转换为LINQ to SQL,但我的LINQ技能还没有。 有人可以帮我转换一下。 with和union语句使我对此更加复杂。

任何帮助赞赏。

那是一个递归的CTE LINQ to SQL还不支持递归CTE(并且可能永远不会)。 抱歉!

作为一种解决方法,您可以将查询保留在SQL中,并将其放在存储过程中。 然后,您可以将该存储过程从LINQ调用到SQL。

LINQ-to-SQL仅支持基本查询; CTE和递归不包括在内。 因此,这是我对LINQ-to-SQL的高科技翻译:

var data = ctx.ExecuteQuery<MyStub>(@"
with c as (
  select  categoryId,parentId, name,0 as [level]
  from task_Category b 
  where b.parentId is null
    union all
  select b.categoryId,b.parentId,b.name,[level] + 1
  from task_Category b join c on b.parentId = 
    c.categoryId)
select name,[level],categoryId,parentId 
  as item 
from c").ToList();

class MyStub {
    public string name {get;set;}
    public int level {get;set;}
    public int categoryId {get;set;}
    public int parentId {get;set;}
}

暂无
暂无

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

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