【发布时间】:2015-12-05 19:35:25
【问题描述】:
我正在尝试创建一个每个键可以保存多个值的字典,并且我创建了一个名为Pair 的类,它由两个strings 组成。我已将idDictionary 定义为包含string 作为键,Pair 作为值,但我不确定如何编写ToDictionary 语句,因为这个概念对我来说是新概念,我找不到这方面的任何例子。
Dictionary<string, Pair<string, string>> idDictionary = new Dictionary<string, Pair<string, string>>();
我知道使用常规的通用字典我会简单地使用这样的东西:
idDictionary = resultData.Rows.Select(row => row.Split(','))
.ToDictionary(id => id[0], id => id[1]);
我不确定如何为名为@987654329@ 的对象实现类似的东西。也许我错过了一些非常简单的东西,但非常感谢那些有答案的人。
编辑以包含完整的代码块和更详尽的解释
原始代码块在这里(带有通用字典)。我更改此设置的原因是,如果每个键的值超过 1 个,则应用程序会因重复键而出错。
private List<ImportItem<T>> ProcessReportResult(CSVTable resultData, ICollection<ImportItem<T>> data, Func<T, string> keyFilter)
{
WriteLog("{1}{0} records found.{1}", resultData.Rows.Length, Environment.NewLine);
//key = Order Number; value = Order ID
var idDictionary = resultData.Rows.Select((row => row.Split(','))).ToDictionary(id => id[0], id => id[1]);
idDictionary.ForEach(id => WriteLog("Input Id = {0} - Matching record Id = {1}", id.Key, id.Value));
var processList = data.Where(item => idDictionary.ContainsKey(keyFilter(item.DataItem))).ToList();
processList.ForEach(item => item.id = idDictionary[keyFilter(item.DataItem)]);
return processList;
}
【问题讨论】:
-
只使用
Tuple有什么问题? -
你想成为什么关键和价值?
-
您能否展示一些示例数据以及您期望得到的结果?
-
我刚刚修改了帖子中的一些错误。
-
加上元组。您还可以根据您的全部要求将列表或集合视为值 (Dictionary
>)
标签: c# string object dictionary