我需要从两个查询中创建一个新模型。我有一个Member实体和一个MemberTeam实体,它们都相互引用。我需要的是所有成员的列表,并知道该成员是否被分配到给定的团队。
我目前有以下代码,但对我来说似乎很笨重,我希望有人有更好的方法来创建这个组合列表,只使用 Linq 语句(没有 foreach)。基本上,代码获取所有成员的列表,获取分配给团队的另一个成员列表,然后使用 foreach 循环查看该成员是否已分配给团队。
int teamId = 1;
var model = new SelectedMemberListModel();
List<Member> allMembers = _unitOfWork.RepositoryFor<Member>().All().ToList();
List<Member> teamMembers = _unitOfWork.RepositoryFor<MemberTeam>().AllIncluding(x => x.Members).Single(x => x.Id == teamId).Members.ToList();
List<SelectedMemberModel> membersWithTeamSelected = new List<SelectedMemberModel>();
foreach (var member in allMembers)
{
SelectedMemberModel selectedMemberModel = new SelectedMemberModel();
selectedMemberModel.FirstName = member.FirstName;
selectedMemberModel.LastName = member.LastName;
if(teamMembers.Contains(member))
{
selectedMemberModel.Selected = true;
}
membersWithTeamSelected.Add(selectedMemberModel);
}
如果需要更好地理解我的模型,这里是我的实体:
public class Member
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int TeamId { get; set; }
public virtual MemberTeam Team { get; set; }
//... Other properties here...
}
public class MemberTeam
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Member> Members { get; set; }
}
public class SelectedMemberModel
{
public int MemberId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public bool Selected { get; set; }
}