Entity Framework Core:Select() - 将 IList<> 属性转换为连接字符串?

问题描述 投票:0回答:1

我有以下选择,它返回我想要的 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
。有没有办法让它在选择中返回一个
List<string>

如果是这样,有没有办法让它不再是一个

List<string>
,而可以是一个
string
,即所有名字的
string.Join()

更新:我添加了 C# 作为标签,因为现在我看到了答案,这是实体框架问题使用的动态对象。我认为这是一个有用的问答,展示了如何在 EF select 中使用动态对象。

c# entity-framework-core
1个回答
0
投票

要返回

List<string>
组织名称,您可以
Select
Name
属性并创建列表:

    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone!.FormattedNumber,
        Following = u.Following.Select(f => f.Name).ToList()
    })
    .ToListAsync();

要返回连接所有组织名称的单个字符串,您可以在匿名类型内使用

string.Join

    .Select(u => new
    {
        u.Name,
        u.Email,
        u.Phone!.FormattedNumber,
        Following = string.Join(", ", u.Following.Select(f => f.Name))
    })
    .ToListAsync();
© www.soinside.com 2019 - 2024. All rights reserved.