0

このインスタンスのサンプルコードはありません。どこから始めればよいのかわからないためです。

基本的に、チェックされるノードのRadTreeViewコレクションがあり、これらは次のように返されます。

IList<RadTreeNode> nodeCollection = RadTreeView1.CheckedNodes;

これらの値の形式は次のとおりです。

001001009001、001001009002、001001009003、001001009004、001001009005、001001010002、001001010003

これは複雑に見えるかもしれませんが、3つの数字の各セットは要素を参照します(例:001 001 009 001)

私は最後の3文字に反映される合計5つの特権を持っています。これらがリストにない場合はチェックされているか、チェックされていない可能性があります。出力にゼロが必要な場合はゼロ、そうでない場合は1になります。他のグループは場所を参照します

出力例:001,001,009,1,1,1,1,1(この場合、5つのprivすべてがチェックされているため)001,001,010,0,1,1,0,0(2と3のみがチェックされているため)

どんな助けでも大歓迎です!!

ありがとう

4

1 に答える 1

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;
}
于 2013-03-26T11:46:35.150 に答える