-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在运行时创建这些 s。

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

您可以使用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 回答
0

使用 Linq to Object 判断列表是否有重复记录

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

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

祝你好运

于 2012-11-12T10:00:29.427 回答