2012-02-06 11 views
0

で、私は以下のようなものを宣言されている辞書を持っているアイテムをグループ化。値は、そのスイッチのポートオブジェクトのリストです。私はこのコードのリストビューに辞書内の項目を追加しようとしています:リスト表示

foreach (KeyValuePair<string, List<FCPort>> portpair in results) 
     {    
      ListViewItem item1 = new ListViewItem(portpair.Key); 
      foreach (FCPort port in portpair.Value) 
      { 
       item1.SubItems.Add(port.FCIDList[0]); 
       item1.SubItems.Add(port.WWPNList[0]); 
       item1.SubItems.Add(port.TextSerializePortName()); 
       this.ResultsListView.Items.Add(item1); 

      } 
     } 

しかし、私は実行時エラーは基本的に私は、リスト内の重複する項目を持っていることを言ってもらいます。それは理にかなっている。私は辞書のキー(スイッチ名)でグループ化しようとしています。どういうわけか、リストビュー内の項目をグループ化する方法や、動的にListBoxをGroupBoxに動的に追加する方法はありますか?基本的に辞書の各キーに新しいListViewを追加しますか?私はまだC#を学んでおり、フォームはまだ新しいです。

答えて

0

LINQ参照をキーセレクタでグループ化することができます。 リストビューのサブアイテムに追加するときにポートペアを列挙可能に拡張します

これは時々私がうまくお手伝いできるコードスニペットです。

Dictionary<String, Country> dict = new Dictionary<string, Country>(); 
dict.Add("Toronto", Country.Canada); 
dict.Add("New York", Country.US); 
dict.Add("Vancover", Country.Canada); 
dict.Add("Seattle", Country.US); 
dict.Add("Fredericton", Country.Canada); 

Lookup<Country,String> lookup = (Lookup<Country,String>) dict.ToLookup(pair =>pair.Value, pair => pair.Key); 

foreach (var countryGroup in lookup) 
{ 
    item = new ListViewItem(countryGroup.Key.ToString()); 
    item.SubItems.Add(string.Format("{0}", string.Join(",", countryGroup.Select(s => "@" + s)))); 
    lv.Items.Add(item); 
    item = null; 
} 
関連する問題