2016-07-21 4 views
1

私は、コンピュータのグループの名前を入力してドメインを検索するプログラムを作成しようとしています(例えば、ITユーザーのコンピュータ名beginnsとDITXX、ここでXXはコンピュータの番号です)新しいコンピュータ名。新しいコンピュータのドメイン名を提案する方法

  1. DIT01
  2. DIT02
  3. ..
  4. DIT10
  5. DIT11
  6. ..

  • DIT156
  • は、私はテキストボックスはどこを持っています。たとえば、私たちはコンピュータを持っていますグループ名を入力し、計算のリストを取得するこの名前を含んでいて、リストと配列に入れています。しかし、どのように最後に使用された名前を取得し、新しい(ここのプログラム名DIT157名DIT156のbeacuseを提案する必要があります)を提案する?私は自然な並べ替えを使用する必要がありますか?またはDITをトリムして数字だけを並べ替え、最後に見つけて1を追加し、トリムされた名前+この番号を表示しますか?

    コードの断片:ランダムを使用するように、ランダムなコンピュータ名の生成のために

    string name = textBox1.Text; 
    DirectoryEntry domain = new DirectoryEntry("LDAP://*****.****.**.**"); 
    DirectorySearcher search = new DirectorySearcher(domain); 
    search.Filter = ("(&(ObjectCategory=computer)(cn=") + name + ("*))"); 
    
    List<string> temp = new List<string>(); 
    
    richTextBox1.Text = ""; 
    List<string> ComputerList = new List<string>(); 
    
    foreach (SearchResult c in search.FindAll()) 
    { 
        var tmp = (c.GetDirectoryEntry().Name.ToString()); 
    
        richTextBox1.Text = richTextBox1.Text + (tmp.Replace("CN=", "")) + (Environment.NewLine); 
        //listView1.Items.Add(tmp.Replace("CN=", ""),2); 
        temp.Add (tmp.Replace("CN=", "")); 
    
        ComputerList.Add(tmp.Replace("CN=", "")); 
    } 
    
    ComputerList.Sort((x, y) => 
    { 
        int ix, iy; 
        return int.TryParse(x, out ix) && int.TryParse(y, out iy) 
         ? ix.CompareTo(iy) : string.Compare(x, y); 
    }); 
    string[] Computers = ComputerList.ToArray(); 
    Array.Sort(Computers); 
    
    foreach (var item in Computers) 
    { 
        listView1.Items.Add(item); 
        Console.WriteLine(item.ToString()); 
    } 
    

    答えて

    0

    私は個人的には、ソート/クエリ以外の何かをしようとするだろう。または、接頭辞に「Path.GetRandomFileName()」という結果を追加して(「。」を取り除いて)、合計の長さを15に制限してください。

    質問とソートを選択すると、あなたの例のコンピュータ名の長さが異なるためです。文字列でソートすると、DIT11とDIT110がリストの隣に表示されます。そしてソートアルゴリズムを書いてしまうと、とにかくテキストを取り除くことになります。

    関連する問題