2013-03-26 28 views
0

我沒有示例代碼在這個實例中,因爲我沒有線索從哪裏開始,它的殺死我!將Tree View節點轉換爲組合記錄

基本上我有被檢查,並且這些被返回爲

IList<RadTreeNode> nodeCollection = RadTreeView1.CheckedNodes; 

這些值的格式如下節點的RadTreeView收集,

001001009001,001001009002,001001009003,001001009004, 001001009005, 001001010002,001001010003

這可能看起來很複雜,但每個一組3個數字指的是一個元素,例如001 001 009 001

我有5個特權總共由最後三個字符反映出來,如果這些特權不在列表中,我可能會檢查或取消選中它們在輸出中爲零,否則爲一個。其他組參考位置

輸出示例:001,001,009,1,1,1,1,1(因爲在這種情況下所有 5 PRIVS已檢查)001,001,010,0,1,1,0,0 (因爲只有2 & 3已被檢查)

任何幫助非常感謝!

由於

回答

2
static void Show() 
{ 
    IEnumerable<string> lst = new string[]{"001001009001", "001001009002", 
     "001001009003", "001001009004", "001001009005", "001001010002", 
     "001001010003" }; 
    var res = Process(lst); 
    forech(string str in res) 
    { 
     Console.WriteLine(str); 
    } 
} 
static List<string> Process(IEnumerable<string> input) 
{ 
    Dictionary<string, int[]> elements = new Dictionary<string,int[]>(); 

    foreach (var str in input) 
    { 
     string element = str.Substring(0, 9); 
     int privelegeNumber = int.Parse(str.Substring(9, 3)); 
     if (!elements.ContainsKey(element)) 
     { 
      elements.Add(element, Enumerable.Repeat(0, 5).ToArray()); 
     } 
     elements[element][privelegeNumber - 1] = 1; 
    } 
    List<string> result = new List<string>(); 
    foreach (var element in elements) 
    { 
     StringBuilder sb = new StringBuilder(21); 
     sb.Append(element.Key.Substring(0, 3)); 
     sb.Append(","); 
     sb.Append(element.Key.Substring(3, 3)); 
     sb.Append(","); 
     sb.Append(element.Key.Substring(6, 3)); 
     foreach (int privelege in element.Value) 
     { 
      sb.Append(","); 
      sb.Append(privelege); 
     } 
     result.Add(sb.ToString()); 
    } 
    return result; 
} 
+0

'Enumerable.Repeat(0,5).ToArray()'可以[5]'因爲所有值將默認爲0反正改變爲新'INT。但否則這或多或少是我會做的。 +1。 – juharr 2013-03-26 11:56:36

+1

謝謝,但由於c#提供了非初始化值的錯誤,我不依賴於默認值,並始終初始化變量 – 2013-03-26 12:03:14

+0

謝謝德米特里這是完美的! +1給我介紹給詞典以及:) – JazziJeff 2013-03-26 16:56:18