You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework Core中如何在Select里将集合转为拼接字符串?

在Entity Framework的Select中提取关联集合属性并转换格式

问题描述

我使用以下Select语句获取所需的4列数据:

var allUsers = await dbContext.AppUsers
    .Where(u => allUserIds.Contains(u.IdentityUsersId))
    .Include(u => u.Following)
    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone!.FormattedNumber,
        u.Following
    })
    .ToListAsync();

其中Following是List<Organization>类型,我希望获取Organization.Name,能否在Select中返回List<string>?若可行,能否将其转为通过string.Join拼接而成的字符串?

更新:添加C#标签,因这是Entity Framework中动态对象的使用问题,该问答可展示EF Select中动态对象的用法。

解决方案

1. 返回List<string>类型的组织名称列表

直接对Following集合做嵌套Select,提取每个Organization的Name属性即可,EF会自动解析为对应的SQL查询,无需额外Include(因为Select中已经明确指定了要提取的关联数据):

var allUsers = await dbContext.AppUsers
    .Where(u => allUserIds.Contains(u.IdentityUsersId))
    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone!.FormattedNumber,
        FollowingNames = u.Following.Select(org => org.Name).ToList()
    })
    .ToListAsync();

2. 返回拼接后的字符串

如果需要将组织名称用指定分隔符拼接成单个字符串,EF Core 2.1及以上版本支持直接在LINQ查询中使用string.Join,它会被转换为数据库对应的聚合函数(比如SQL Server的STRING_AGG):

var allUsers = await dbContext.AppUsers
    .Where(u => allUserIds.Contains(u.IdentityUsersId))
    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone!.FormattedNumber,
        FollowingNames = string.Join(", ", u.Following.Select(org => org.Name))
    })
    .ToListAsync();

如果使用的是EF6或低版本EF Core,string.Join无法被EF解析为SQL,此时可以先将数据加载到内存,再在客户端完成拼接:

var allUsers = await dbContext.AppUsers
    .Where(u => allUserIds.Contains(u.IdentityUsersId))
    .Include(u => u.Following)
    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone!.FormattedNumber,
        u.Following
    })
    .ToListAsync()
    // 在客户端处理字符串拼接
    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone,
        FollowingNames = string.Join(", ", u.Following.Select(org => org.Name))
    })
    .ToList();

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 12:56:11