我正在学习 EF Core 和 LINQ 中的多对多联合表。我有以下模型:
public class ProjectManager
{
public int ProjectID { get; set; }
public Project Project { get; set; }
public string AppUserID { get; set; }
public AppUser AppUser { get; set; }
}
我有以下 View 模型:
public class DeleteUserFromProjectViewModel
{
public IQueryable<AppUser> Users { get; set; }
public PagingInfo PagingInfo { get; set; }
}
在我的 Controller 中,我尝试为我的 ViewModel 填充 Users
:
DeleteUserFromProjectViewModel model = new DeleteUserFromProjectViewModel
{
//HOW DO I RETURN JUST THE APPUSERS FROM THE PROJECT MANAGER OBJECT?
//Users = repository.ProjectManagers.Any(p => p.ProjectID == projectId).Select;
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = proj.ProjectManagers.Count()
}
};
我已经试过了
List<AppUser> userList = new List<AppUser>();
foreach(ProjectManager pm in proj.ProjectManagers)
{
//this gives error that cannot convert string userId to char??
foreach (string userId in pm.AppUserID)
{
AppUser newUser = await userManager.FindByIdAsync(userId);
userList.Add(newUser);
}
}
最佳答案
因为你的 pm.AppUserID
已经是一个字符串值,如果你在上面使用 foreach
你会迭代字符串值然后你会得到 char
从您的评论来看,您似乎可以使用 linq Select
。
List<AppUser> userList = proj.ProjectManagers.Select(x=>x.AppUser).ToList();
关于c# - 使用 LINQ 返回子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348138/