如何根据UserID分组数据?

时间:2017-10-20 05:22:04

标签: c# linq

大家好! 我是MVC和Linq的新手,我对这些代码有些问题。 我想根据UserId对organizationId进行分组,但它只在我的View中显示了每个UserId的organizationId。 实际上,我希望所有的organizationId都具有相同的UserId。 我怎么能得到它?

public ActionResult Index()
{
    var datas = _userInOrganizationService.UserInOrganizations.GetByAll().ToList();
    var userdata = ApplicationUserManager.Users.Where(x => x.Active == true).ToList();
    var orgdata = _userInOrganizationService.Organizations
        .GetByAll().ToList();            

    List<UserInOrganizationViewModel> data = (
      from z in datas
      join user in userdata on z.UserID equals user.Id
      join org in orgdata on z.OrganizationID equals org.OrganizationID
      select new UserInOrganizationViewModel
    {

      UserID = user.Id,
      UserName = user.UserName,
      FullName = user.FullName,
      Email = user.Email,

      NRCNo = user.NRCNo,
          Organizations = ShowOrganizaton(org.OrganizationID),

          PasswordQuestion = user.PasswordQuestion,
      PasswordAnswer = user.PasswordAnswer,
      CreatedDate = user.CreatedDate,
      UpdatedDate = user.UpdatedDate
    }).Distinct().ToList();

    return View(data);
}

public List<Organization> ShowOrganizaton(string orgid)
{
    var data = _userInOrganizationService.Organizations.GetByAll().Where(x => x.Active == true && x.OrganizationID == orgid).AsEnumerable().ToList();

    return data;
}

1 个答案:

答案 0 :(得分:0)

只需将.GroupBy(u => u.UserID)添加到LINQ语句中即可。

这将按UserID订购所有记录