如果你想要一个不可变的集合(在集合创建后你不会添加到集合中),那么使用查找。如果您需要能够添加/删除条目,请使用字典。我已经包含了一个使用 IGrouping 的示例,但它对于查找来说是最慢的,因为您需要遍历直到找到密钥,但是如果您需要迭代所有密钥,就像您想为每个提取随机字符串一样,它非常有效键。
下面是一个使用 Lookup 的例子:
var values = new[] {
new KeyValuePair<string,string> ("AAAA","ACFE"),
new KeyValuePair<string,string> ("AAAA","AAFE"),
new KeyValuePair<string,string> ("AAAA","CAED"),
new KeyValuePair<string,string> ("AAAA","HSGB"),
new KeyValuePair<string,string> ("AAGB","ZZZZ"),
new KeyValuePair<string,string> ("AAGB","XXXX"),
new KeyValuePair<string,string> ("AAGB","CAED"),
new KeyValuePair<string,string> ("AAGB","HSGB"),
new KeyValuePair<string,string> ("ABDA","YYYY"),
new KeyValuePair<string,string> ("ABDA","WWWW"),
new KeyValuePair<string,string> ("ABDA","CAED"),
new KeyValuePair<string,string> ("ABDA","HSGB"),
};
// Convert array to a Lookup
var lookup=values.ToLookup(k=>k.Key, v=>v.Value);
// Retrieve random string from entry "AAAA"
var entry = lookup["AAAA"];
var rand = new Random();
var max = entry.Count();
var ans = entry.Skip(rand.Next(max)).First();
这是一个使用Dictionary<string,List<string>>的例子:
var values = new[] {
new KeyValuePair<string,string> ("AAAA","ACFE"),
new KeyValuePair<string,string> ("AAAA","AAFE"),
new KeyValuePair<string,string> ("AAAA","CAED"),
new KeyValuePair<string,string> ("AAAA","HSGB"),
new KeyValuePair<string,string> ("AAGB","ZZZZ"),
new KeyValuePair<string,string> ("AAGB","XXXX"),
new KeyValuePair<string,string> ("AAGB","CAED"),
new KeyValuePair<string,string> ("AAGB","HSGB"),
new KeyValuePair<string,string> ("ABDA","YYYY"),
new KeyValuePair<string,string> ("ABDA","WWWW"),
new KeyValuePair<string,string> ("ABDA","CAED"),
new KeyValuePair<string,string> ("ABDA","HSGB"),
};
//Convert array to Dictionary<string,List<String>>
var dict = values.GroupBy(k=>k.Key)
.ToDictionary(k=>k.Key,v=>v.Select(kvp=>kvp.Value).ToList());
// Retrieve random string from entry "AAAA"
var entry = lookup["AAAA"];
var rand = new Random();
var max = entry.Count();
var ans = entry.Skip(rand.Next(max)).First();
这是一个使用 IGrouping 的示例:
var values = new[] {
new KeyValuePair<string,string> ("AAAA","ACFE"),
new KeyValuePair<string,string> ("AAAA","AAFE"),
new KeyValuePair<string,string> ("AAAA","CAED"),
new KeyValuePair<string,string> ("AAAA","HSGB"),
new KeyValuePair<string,string> ("AAGB","ZZZZ"),
new KeyValuePair<string,string> ("AAGB","XXXX"),
new KeyValuePair<string,string> ("AAGB","CAED"),
new KeyValuePair<string,string> ("AAGB","HSGB"),
new KeyValuePair<string,string> ("ABDA","YYYY"),
new KeyValuePair<string,string> ("ABDA","WWWW"),
new KeyValuePair<string,string> ("ABDA","CAED"),
new KeyValuePair<string,string> ("ABDA","HSGB"),
};
//Convert array to IGrouping<string,string>
var group = values.GroupBy(k=>k.Key);
// Retrieve random string from entry "AAAA"
var entry = group.First(k=>k.Key == "AAAA");
var rand = new Random();
var max = entry.Count();
var ans = entry.Skip(rand.Next(max)).First().Value;