2016-09-02 79 views
0

我有一个项目List<string> keysList<Objects> obj该对象有多个项目,它有另一个对象的名单,让我们把它叫做持有者拥有它是连键的值相同的名称。插入列表<string>和列表<Object>到字典

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

你的问题是不明确的解决了这个问题。什么是'keyholder'和'obj'?他们来自哪里 –

+0

如果您想让我们了解您想要实现的目标,您必须展示更多代码 –

+0

我试图编辑我的代码,但连接非常差 基本上 - 列表< key >有{“a” , “b”, “C”}和列表有其中一人叫另一个对象持有者项目 OBJ { 名 ID 持有者:{ID,名称= { “一”} } 我要添加因为obj ist'List '而不是包含keyholder成员的类型列表,所以只有keyholder的名称与密钥 –

回答

0

随着我从你们那里得到了帮助,我通过使用包含关键字,因为了IEnumerable可以在项目列表

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

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

如果keyholder可以存储与给定的键有多个值,那么您可以将列表转换为Dictionary<TKey, TValue[]>

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

它将返回具有key所有项目作为关键一Dictionary和数组来自obj.keyholder的值具有对应的name

请注意,您的obj.keyholder应该是List<TValue>,其中TValue是一种具有name属性的类型。因为object没有name属性,所以不能将此函数应用于List<object>

+0

这看起来不错,让我试试看,并回应你。 –

+0

... obj是'List '... – DarkSquirrel42

+0

是的,我不能直接从obj调用keyholder,我需要使用obj.where –

相关问题