我有一个字典,其中包含作为资产的信息(如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; }
}
有人能建议我实现这个目标吗?
答案 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"]));