我有一个项目列表List<string> keys
和List<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与键具有相同的值时,我才想将对象添加到字典中。
答案 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());