我试图从一个表中提取
UserId
,但当我提取它时,它以包含字符串数组的字符串数组形式出现。如何展开它以获取一个字符串数组?我尝试使用SelectMany(i => i.UserId)
,但是我得到错误:为什么会这样?为什么它认为结果是char类型?无法隐式将类型“System.Collections.Generic.IEnumerable< char>”转换为“System.Collections.Generic.IEnumerable< string>”
[DataContract]
public class AdminDashboardData
{
[DataMember]
public IEnumerable<string> Users { get; set; }
}
public IEnumerable<string> GetUserIds(IEnumerable<int> groupIds)
{
using(GameDbContext entityContext = new GameDbContext())
{
return entityContext.InvestigatorGroupUsers
.Include(i => i.InvestigatorGroup)
.Where(i => i.InvestigatorGroup.IsTrashed == false)
.Where(i => groupIds.Contains(i.InvestigatorGroupId))
.Select(i => i.UserId).Distinct().ToFullyLoaded();
}
}
public class InvestigatorGroupUser
{
public int InvestigatorGroupUserId { get; set; }
public int InvestigatorGroupId { get; set; }
public string UserId { get; set; }
public InvestigatorGroup InvestigatorGroup { get; set; }
}
public AdminDashboardData GetDashboardData(string userId)
{
IGamePlayedRepository GamePlayedRepo = _GamePlayedRepo ?? new GamePlayedRepository();
// Get the investigator groups from the userid
IEnumerable<int> groupIds = GroupUserRepo.GetGroupIds(userId);
AdminDashboardData data = new AdminDashboardData();
if (!groupIds.IsNullOrEmpty())
{
data.Users = GroupUserRepo.GetUserIds(groupIds);
}
return data;
}
public static IEnumerable<T> ToFullyLoaded<T>(this IEnumerable<T> enumerable)
{
return enumerable.ToList();
}
ToFullyLoaded()
是做什么的? - Andrey NasonovSelectMany(i => i.UserId)
操作,其中userid
似乎是一个字符串,因此SelectMany返回IEnumerable<char>
。请解释清楚这句话的含义:“当我拉它时,它以字符串数组的形式出现”。 - Arghya Cdata.Users
是一个包含string[]
的IEnumerable<string>
。我希望它只是IEnumerable<string>
或者string[]
。 - Eitan KUsers
在IEnumerable<string>
中声明的类型,但实际类型是string[]
。这就像说“我有一只动物”,而你手里拿着的是一只狗。它并不是说IEnumerable<string>
包含字符串数组。 - D Stanley