C#,读取一个键值和其他键值作为Dictionary to List <string,string>的值

时间:2016-07-11 07:44:32

标签: c#

我有一个字典,其中包含作为资产的信息(如id,在等上创建)。我想使用LINQ将id值作为键提取并创建值作为LIST的值。以下是示例。

Dictionary[0]=
    id:001, description:Test, name:SomeName, createdOn:11-09-2015

Dictionary[1]=
    id:002, description:Test2, name:SomeName2, createdOn:17-09-2015

我需要阅读List<string,string>作为

001:11-09-2015

002:17-09-2015

现在我尝试只读取一个值,如下所示

public Hits[] hits { get; set; };
hits.SelectMany(v => v.Source.Where(s => s.Key == "ObjId")).Select(s => s.Value).ToList()

班级在这里:

public class Hits
{     
    [DataMember(Name = "_source")]
    public Dictionary<string,string> Source { get; set; }
}

有人能建议我实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

没有List这样的东西。列表有一种类型。如果您想要多个类型的列表,请创建一个类来保存这些类型或使用元组

对于你的Linq,你已经在字典中有了项目,所以没有必要在查找key等于的地方,只需从字典中读取值。

以下内容应生成包含id和createdOn字段的List<Tuple<string, string>>。这似乎是你想要的。

hits.Select(x => new Tuple<string, string>(x.Source["id"], x.Source["createdOn"])).ToList();

或者你可以

List<string> = hits.Select(x => string.Format("{0}:{1}", x.Source["id"], x.Source["createdOn"])).ToList();

Dictionary<string, string> = hits.ToDictionary(x => x.Source["id"], x => x.Source["createdOn"]));