【问题标题】:Sub query in linq to sqllinq to sql中的子查询
【发布时间】:2017-06-13 01:25:34
【问题描述】:

我想在我的 sql 命令中返回子查询结果的逗号分隔。 如下:

Select  [User].UserName,
    (Select [Role].Name + ', '
            From
            Security.UserRole       As  UserRole
                Inner Join
            Security.[Role]         As  [Role]
                On  UserRole.RoleId =   [Role].RoleId

            Where   UserRole.UserId =   [User].UserId
            For Xml Path('')
    )
    From    Security.[User]         As  [User]

基本上每个用户都有多个角色,我想以逗号分隔的格式为每个用户加载角色名称。

Sql 中的结果集如下:

有什么方法可以在 LINQ 中编写此查询?

谢谢

【问题讨论】:

    标签: linq tsql subquery


    【解决方案1】:

    试用代码

    创建方法获取用户角色特定用户

    Public String GetuserRoles(int userid)
    {
      string strroles="";
            (from UserRole in Security.UserRole 
                 join Role in Security.Role on UserRole.RoleId  equals Role.RoleId
                where UserRole.UserId==userid
                 select new
                 {
                     strs = Role.Name + ","
                 }).ToList().ForEach(c => strroles = strroles + c.strs);
    
         return strroles;
    }
    

    编写 Linq 查询后:

     var result=( from p in  Security.User  select new {
                  UserName=p.UserName,
                  Roles=GetuserRoles(p.UserId)
                 }).ToList();
    

    【讨论】:

    • 感谢回答,问题是我需要在odata方法中使用它,所以它应该是IQueriable。所以它应该都在一个查询中。
    • 如何进行单次查询?请写查询
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多