将List <string>和List <object>插入Dictionary

时间:2016-09-02 08:40:46

标签: c# dictionary

我有一个项目列表List<string> keysList<Objects> obj,其中对象有多个项目,其中有另一个对象,我们称之为keyholder,其名称与key具有相同的值。< / p>

List <string> key = {"a","b"}

List <Object> obj = object with items {name, id, IEnumerable<keyholder>}

keyholder has value name which can be the same with key.

我想创建一个

key.ToDictionary(e=>e, f=> obj.Where(obj.keyholder.Where(keyholder.name == key));

当且仅当keyholder.name与键具有相同的值时,我才想将对象添加到字典中。

2 个答案:

答案 0 :(得分:1)

您的语法不正确。 Where将lambda函数作为参数。

如果keyholder可以使用给定密钥存储多个值,那么您可以将列表转换为Dictionary<TKey, TValue[]>

key.ToDictionary(k => k, 
                 k => obj.keyholder.Where(x => x.name == key).ToArray());

它会返回一个Dictionary,其key中的所有项目都作为关键字,而obj.keyholder的值数组则包含相应的name

请注意,您的obj.keyholder应该是List<TValue>,其中TValue是具有name属性的类型。由于List<object>没有object属性,因此您无法将此功能应用于name

答案 1 :(得分:0)

在我得到你的帮助后,我通过使用一个包含关键字来解决它,因为IEnumerable可以在项目列表中

key.ToDictionary(k => k, 
                 k => obj.Where(g => g.keyholder.Contains(k)).ToList());