实体框架:数据库查询中的字符串连接

时间:2017-06-25 19:14:19

标签: entity-framework linq-to-entities

我需要使用linq语句创建字符串连接。我有以下数据:

栏目

  • Id:1,Title:Test1
  • Id:2,Title:Test2

Section_User

  • SectionId:1,UserId:1
  • SectionId:1,UserId:2

用户

  • Id:1,姓名:User1
  • Id:2,姓名:User2

我需要以下结果:

SectionId:1,用户:User1,User2

我创建了以下Linq语句:

var query2 =    from section in this.context.Sections
                from users in section.Users
                group section by section2.Id into groupedSection
                select new {
                    SectionId = groupedSection.Key,
                    Users = string.Join(",", users.Select (x => x.Name)) // compile error, but I don't know how I write the statement correctly
                };

有人能告诉我,如何使用linq语句在数据库端(不是内存中)创建字符串连接。

谢谢!

1 个答案:

答案 0 :(得分:1)

根据评论中@Alexei的链接,您的行应该看起来像

var query2 =    from section in this.context.Sections
                from users in section.Users
                group section by section2.Id into groupedSection
                select new {
                    SectionId = groupedSection.Key,
                    Users = string.Join(",", (from u in users select s.Name).ToArray())
                };

但是,如果由于LINQ to Entities错误而无效,并且您愿意将Users保留为IEnumerable<string>,则只需使用:

var query2 =    from section in this.context.Sections
                from users in section.Users
                group section by section2.Id into groupedSection
                select new {
                    SectionId = groupedSection.Key,
                    Users = (from u in users select s.Name)
                };

稍后在需要时,您可以加入字符串,或使用循环显示名称。