首页 > 解决方案 > 列表集合循环

问题描述

语言 c# , Visual Studio 2015

public class UserDTO
    {
        public string UserID {get;set;}
        public string UserName {get;set;}
        public string ManagerName {get;set;}
        public string ManagerEmail {get;set;}
    }

我得到如下列表输入

List<UserDTO> lstUsr = new List<UserDTO>();
lstUsr.Add(new UserDTO { UserID = "A1", UserName = "AXZ" });
lstUsr.Add(new UserDTO { UserID = "B1", UserName = "BYZ" });

我有一种获取 ManagerEmail 和 ManagerName 的方法,输入是 UserID

我需要循环 lstUsr 并更新同一列表中每个用户 ID 的 ManagerEmail 和 ManagerName。

现在我创建多个列表并获得结果。我想知道它是否有效,是否使用相同的 List 来完成?感谢伪代码帮助

string ShiftUserID = string.Join(",", lstUser.Distinct().Select(a => a.UserID));
private List<UserDTO> GetManagerDetail(string ShiftUserID )
        {
            List<UserDTO> lstMgrDetail = new List<UserDTO>();
            UserDTO oUser = null;
            string sMgrName;
            string sMgrMobile;
            string sMgrEmail;
            string[] sUserADID = sShiftUserADID.Split(',').Select(sValue => sValue.Trim()).ToArray();
            foreach (string sADID in sUserADID)
            {

                    oUser = new UserDTO();
                    ADHelperUtility.GetManagerDetail(ShiftUserID , out sMgrEmail, out sMgrName);
                    oUser.ManagerName = sMgrName;
                    oUser.ManagerEmail = sMgrEmail;
                    lstMgrDetail.Add(oUser);
                }

            return lstMgrDetail;
        }

标签: c#listlinq

解决方案


按照您的期望遍历列表并设置值:类似于:

foreach(UserDTO user in lstUsr)
{
   string managerName;
   string managerEmail = GetManagerInfoByID(user.UserID, out managerName); // Returns email and send out managerName. You could use an object here instead, just showing this for demo purposes.

  user.ManagerName = managerName;
  user.ManagerEmail = managerEmail;
}

推荐阅读