C# IList<;字符串>;一个字符串接一个字符串

C# IList<;字符串>;一个字符串接一个字符串,c#,C#,我有一个列表IList,我想连接所有字符串,我使用该代码,但结果是: Roles = String.Join(",",_userManager.GetRolesAsync(user)). System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[System.Collections.Generic.IList1[System.String],Microsoft.AspNetCore.Identit

我有一个列表IList,我想连接所有字符串,我使用该代码,但结果是:

Roles = String.Join(",",_userManager.GetRolesAsync(user)).
System.Runtime.CompilerServices.AsyncTaskMethodBuilder
1+AsyncStateMachineBox
1[System.Collections.Generic.IList
1[System.String],Microsoft.AspNetCore.Identity.UserManager
1+d\u 112

我通过以下代码修复它:

var roles = await _userManager.GetRolesAsync(user);

var role = "";

foreach (var r in roles)
{
    if (!role.Contains(",")) { role = r; }
    else { role = "," + r; }
}
vm.ApplicationUser = user;
vm.Roles = role;
我想知道为什么第一个代码不起作用。

Roles=String.Join(“,”,wait\u userManager.GetRolesAsync(用户))
Roles=String.Join(“,”等待_userManager.GetRolesAsync(用户))

因为您需要等待
任务
。因为您需要等待
任务
。请确保在中调用此方法的方法返回任务并将其自身标记为异步。确保在中调用此方法的方法返回任务并将其自身标记为异步。