我在这个例子中没有示例代码,因为我不知道从哪里开始并杀死我!
基本上我有一个RadTreeView节点集合,这些节点都经过检查,并以
的形式返回IList<RadTreeNode> nodeCollection = RadTreeView1.CheckedNodes;
这些值的格式如下,
001001009001,001001009002,001001009003,001001009004,001001009005, 001001010002,001001010003
这可能看起来很复杂,但每组3个数字指的是元素,例如001 001 009 001
我总共拥有5个权限,这些权限由最后三个字符反映出来,如果它们不在列表中,可以选中或取消选中这些权限,我想在输出中输入零,否则为1。其他组指的是位置
示例输出:001,001,009,1,1,1,1,1(因为在这个例子中全部 五个私人已被检查)001,001,010,0,1,1,0,0(因为只有2&amp; 已经检查过3个)
非常感谢任何帮助!!
由于
答案 0 :(得分: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;
}