我需要像这样转换一个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字符串,字符串。
任何想法?
答案 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()
作为值。