.NET中将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序)

本文主要是介绍.NET中将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

将对应集合中的参数按照ASCII码按照从小到大排序,并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA,其实对于有些参数比较少的而已我们完全可以自己使用固定拼接的方式拼接好来,但是假如参数集合中的参数多达十几个呢?你还是愿意用死方法一个一个的拼接吗?当然我是不愿意的,下面是我在网上的找的一个关于参数ASCII按从小到大排序的例子并结合自己的需求而总结的一个比较好的方法,已经在项目中使用了。

代码实现


/// <summary>
/// 将参数模型转为按照ASCII码从小到大排序的并且通过键值对的格式拼接而成的字符串如:(stringA="appId=xxxxxx&body=test&merchantId=xxxxx&random=xxxx&key=xxxx")
/// </summary>
/// <param name="rqData">实例的支付参数模型</param>
/// <returns></returns>
public string GetParameterAsciiAsc(paymentModel rqData)
{
//rqData为自己实例化的支付参数模型
Dictionary<string, string> stringSignTemp = new Dictionary<string, string>();
stringSignTemp.Add("appId",rqData.appId.ToString());
stringSignTemp.Add("body",rqData.body);
stringSignTemp.Add("channel",rqData.channel);
stringSignTemp.Add("merchantId",rqData.merchantId.ToString());
stringSignTemp.Add("notifyUrl", rqData.notifyUrl);
stringSignTemp.Add("outTradeNo", rqData.outTradeNo);
stringSignTemp.Add("openId", rqData.openId);
stringSignTemp.Add("random",random);
stringSignTemp.Add("subject", rqData.subject);
stringSignTemp.Add("totalFee",(rqData.totalFee).ToString());//单位为分
stringSignTemp.Add("tradeType", rqData.tradeType);var stringSign=JoinToStrForm(stringSignTemp);return stringSign;
}/// <summary>
/// 将字典集合转化为String类型字符串,并按照参数名ASCII码从小到大排序(字典序)
/// </summary>
/// <param name="dataPara">字典集合数据</param>
/// <returns></returns>
public string JoinToStrForm(Dictionary<string, string> dataPara)
{
var parameterAsc= dataPara.OrderBy(x => x.Key, new ComparerString()).ToDictionary(x => x.Key, y => y.Value);//参数按照参数名ASCII码从小到大排序(字典序)
List<string> list = new List<string>();
foreach (var item in parameterAsc)
{
//通过key,value拼接key=value
list.Add(item.Key + "=" + item.Value.Replace("#", "").Replace("?", "").Replace("&", "").Replace("=", ""));
}return string.Join("&", list);
}/// <summary>
/// 对象字符串比较
/// </summary>
private class ComparerString : IComparer<String>
{public int Compare(String x, String y){//将此实例与指定的 <see cref="T:System.String" /> 对象进行比较,并指示此实例在排序顺序中是位于指定的字符串之前、之后还是与其出现在同一位置。return string.CompareOrdinal(x, y);}
}

​​

这篇关于.NET中将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869532

相关文章

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元