2016-01-20 31 views
-1

這是我Dictionary如何將類添加到Dictionary中的嵌套類?

public class Company 
{ 
    public string ComID { get; set; } 
    public string ComName { get; set; } 
    public List<Dep> Dep { get; set; } 
} 
public class Dep 
{ 
    public string DepID { get; set; } 
    public string DepName { get; set; } 
    public string isDepAt { get; set; } 
    public List<User> User { get; set; } 
} 
public class User 
{ 
    public string UserID { get; set; } 
    public string UserName { get; set; } 
    public string UserTitle { get; set; } 
    public string UserExt { get; set; } 
    public string UserIsAt { get; set; } 
} 


protected void Page_Load(object sender, EventArgs e) 
{ 
    Dictionary<int, Company> dic = new Dictionary<int, Company>(); 

    DataTable data=new DataTable(); 
    //get data ... 
    //Creat User 
    //Creat Dep and add User to class 
    //Creat Company and add Dep to class 
    //Add Company to Dictionary 'dic' 
} 

後數據綁定,我怎麼會在Dictionary添加新User的內在張力結構?

我用這樣的方式:

User _user = new User() 
    { 
     UserID = "123", 
     UserName = "John cena", 
     UserTitle = "Champian", 
     UserExt = "7777", 
     UserIsAt = "Yes" 
    }; 
dic.Where(x => x.Value.Dep.Select(y => y.DepID == "abcDep").FirstOrDefault()).FirstOrDefault().Value.Dep.Where(z => z.DepID == "abcDep").FirstOrDefault().User.Add(_user); 

有更好的辦法來做到這一點?

+0

不知道你在尋找什麼樣的幫助。很明顯,你期望的項目有時不會被發現(因爲你正在使用'FirstOrDefault()'),但是如圖所示的其他手形代碼(大概簡化/組合在一行中作爲後期樣本)並不處理項目不存在的情況。請確保提供包含'null'處理的完整代碼,以便有人可以爲您的實際代碼提供合理的建議。 –

+0

如果內部集合有頻繁更新,爲什麼不能使用字典instread?比如'Dictionary ' –

回答

0
var curDepId = "abcDep"; 
var curUser=new User() 
      { 
       UserID = "123", 
       UserName = "John cena", 
       UserTitle = "Champian", 
       UserExt = "7777", 
       UserIsAt = "Yes" 
      }; 
foreach (var d in dic) 
{ 
    var curCompany=d.Value; 
    if (curCompany == null || curCompany.Dep==null) continue; 
    var depObj = curCompany.Dep.Where(c => c.DepID == curDepId).FirstOrDefault(); 
    if (depObj != null) 
    { 
     if(depObj.User==null) 
     { 
     depObj.User=new List<User>(); 
     } 
     depObj.User.Add(curUser); 
     break; 
    } 
}