-2

いくつlistかの文字列があり、ループ内で動的にそれぞれのリストを作成したいと考えています。

主なアイデアはlist、ループを介してこれから各文字列を取得し、この文字列を名前として使用してリストを作成することです。次に、それにいくつかのデータを追加します。

例:

   List<string> names = new List<string>(); // this is the main list with strings

   foreach (string nm in name)
   {
     // Here create a new list with this name
     // Add data to the list
   }  

   // Now, compare all of them to find duplicate data

   // Give message if any duplicate data found

更新: 基本的に、list実行時にいくつかのデータベース API を使用してデータを追加します。文字列名はその API のキーです。したがって、メイン リストの各名前を使用して、データベースからデータを取得し、その名前のリストを作成してデータを追加します。後でそれらを一緒に比較します。したがって、基本的な問題は、実行時にこれらをどのように作成するかですlist

4

3 に答える 3

1

一般的な辞書を使用します。

List<string> names = new List<string>(); // this is the main list with strings
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

foreach (string name in names)
{
    if (!dict.ContainsKey(name))
        dict.Add(name, new List<string>());
    dict[name].Add("another one bytes the dust :)");
}  

上記の例では、一意の名前の数に等しいキーの量を持つ辞書があり、関連付けられたリストに複数の項目を持つキーによって重複を見つけることができます。

例えば:

string[] dupes = dict.Keys.ToList().Find(k => dict[k].Count > 1).ToArray();
于 2012-11-12T10:02:39.623 に答える
0

Linq to Objectを使用して、リストに重複するレコードがあるかどうかを判断します

bool IsDuplicate  = (names.Count != names.Distinct().Count());

if(IsDuplicate) {
    // Message : List has duplicate values.
}

幸運を

于 2012-11-12T10:00:29.427 に答える
0

IList<KeyValuePair<String,IList<SomethingData>>>または使用できますHastable<String,IList<SomethingData>>

 //fill data to lists
 IList<KeyValuePair<String,IList<SomethingData>>> dataSets=new  List<KeyValuePair<String,IList<SomethingData>>>();
 IList<string> names = new List<String>();
 foreach (string nm in names)
 {
     IList<SomethingData> data = new List<SomethingData>();
     //...fill data
     dataSets.Add(new KeyValuePair<string, IList<SomethingData>>(nm, data));
 } 

 //search lists by name
 String nameForSearch = "test";
 IEnumerable<KeyValuePair<String,IList<SomethingData>>> dataSetsByName = dataSets.Where(ds => ds.Key == nameForSearch);
于 2012-11-12T10:13:36.690 に答える