2013-06-05 84 views
0

我有下面的函數,我試圖做和填充名爲用戶的類。基於變量的動態類標識符

我希望爲每個用戶動態命名類標識符。

正在傳入的數據表包含如下信息。

USER  | CONTROLNUMBER 
"jsmith" | "789842" 

我想創建一個名爲「JSmith」的類並相應地填充該類中的屬性。

我對於以有用的方式使用類非常新,所以要溫和。

public static void FillUserListClass(DataTable dt, string _userName) 
{ 
User _userName = new User(); 
_userName.ControlNumber = "789842"; 
_userName.UserName = "jsmith"; 
} 
+0

東西是不使用類的一個有效途徑。你想達到什麼目的? –

+0

思考「類」這個詞約翰史密斯不是一個類,除非它們有很多(我猜那裏有,但這不是重點!)用戶是一類對象/實體,jsmith被歸類爲用戶。所以你在那個代碼片段中做的是正確的。 – matt

+0

我試圖跟蹤我的程序選擇的所有ControlNumbers(功能未顯示)。我想跟蹤與每個ControlNumber關聯的名稱。我想過使用字典,但似乎有限,因爲我將有1個用戶名,並可能爲每個用戶提供數千個ControlNumbers。 – MaylorTaylor

回答

0

這樣的事情是否適合列表想法的字典?

static Dictionary<string, List<int>> UserList = new Dictionary<string, List<int>>(); 

public static void FillUserListClass(DataTable dt) 
{ 
    for (int ctr = 0; ctr < dt.Rows.Count; ctr++) 
       { 
        var row = dt.Rows[ctr]; 
        var userName = row["User"].ToString(); 

        if (UserList.ContainsKey(userName)) 
        { 
         UserList[userName].Add(Convert.ToInt32(row["ControlNumber"])); 
        } 
        else 
        { 
         UserList.Add(row["User"].ToString(), new List<int>()); 
         UserList[userName].Add(Convert.ToInt32(row["ControlNumber"])); 
        } 
    } 

如果是這樣,如何將我打印出來的字典所以你會看到類似

'jsmith' has 4 control numbers. 

"234950" 
"494602" 
"494200" 
"585890" 
+1

是的!這是主意!要打印,只需做一個'foreach(var kvp in UserList)',那麼kvp(或keyValuePair)就會有一個關鍵成員,即用戶名和一個值成員 – matt