将复杂对象转换为字典<string,string> </string,string>

时间:2014-10-29 10:23:29

标签: c# dictionary

我需要像这样转换一个dto对象类:

 public class ComplexDto 
    {
        public ComplexDto()
        {
            ListIds = new List<ListIdsDto>();            
        }

        public string Propertie1 { get; set; }
        public string Propertie2 { get; set; }

        public IList<int> ListIds { get; set; }        
    }    

dictionary<string,string>

这只是一些类示例,此类将用作json对象,如下所示:

     {"Propertie1":"ss","Propertie2":"","ListIds":[1,2,3]}

我需要将此对象作为字符串字典传递给FormUrlEncodedContent(字典)。

我有这个:

     var data = new Dictionary<string, string>();            
     data[string.Empty] = ComplexDto.ToJson();      

我想将ComplexDto.ToJson()或ComplexDto对象转换为Dictionary字符串,字符串。

任何想法?

1 个答案:

答案 0 :(得分:0)

假设您有一个包含ComplexDto个实例的集合,如:

List<ComplexDto> complexDtoList = ...;

并且您希望存在会导致异常的重复键(否则您可能首先使用了字典)。

您可以使用Enumerable.GroupBy获取唯一键。然后你必须决定你想用1-n Propertie2 - 每组的字符串做什么。一种方法是使用String.Join使用分隔符连接所有内容:

Dictionary<string, string> result = complexDtoList
    .GroupBy(dto => dto.Propertie1)
    .ToDictionary(
        p1Group => p1Group.Key,
        p1Group => string.Join(",", p1Group.Select(dto => dto.Propertie2)));

您还可以构建Dictionary<string, List<string>>并使用p1Group.Select(dto => dto.Propertie2).ToList()作为值。