对象转字典、字典排序

简介: 对象转字典、字典排序
        /// <summary>    
        /// 将对象属性转换为key-value对    
        /// </summary>    
        /// <param name="o"></param>    
        /// <returns></returns>    
        public static Dictionary<String, Object> ObjToMap(Object o)
        {
            Dictionary<String, Object> map = new Dictionary<string, object>();
            Type t = o.GetType();
            PropertyInfo[] pi = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            foreach (PropertyInfo p in pi)
            {
                MethodInfo mi = p.GetGetMethod();
                if (mi != null && mi.IsPublic)
                {
                    map.Add(p.Name, mi.Invoke(o, new Object[] { }));
                }
            }
            return map;
        }
        /// <summary>  
        /// 数据字典按Key升序排列  
        /// </summary>  
        /// <param name="dic"></param>  
        /// <returns></returns>  
        public static string DictonarySortToStr(Dictionary<string, Object> dic)
        {
            var dicSort = (from objDic in dic orderby objDic.Key ascending select objDic).ToList();
            StringBuilder str = new StringBuilder();
            for (int i = 0; i < dicSort.Count; i++)
            {
                KeyValuePair<string, Object> kvp = dicSort[i];
                if (kvp.Value == null || string.IsNullOrEmpty(kvp.Value.ToString()))
                    continue;
                    str.AppendFormat("{0}={1}&", kvp.Key, kvp.Value);
            }
            str = str.Remove(str.Length - 1, 1);
            return str.ToString();
        }
        /// <summary>  
        /// 数据字典按Key的Ascii升序排列  
        /// </summary>  
        /// <param name="dic"></param>  
        /// <returns></returns>  
        public static string DictonarySortAsciiToStr(Dictionary<string, Object> dic)
        {
            string[] keys = dic.Keys.ToArray();
            Array.Sort(keys, string.CompareOrdinal);
            StringBuilder str = new StringBuilder();
            foreach (string key in keys)
            {
                Object value;
                dic.TryGetValue(key, out value);
                if (value == null || string.IsNullOrEmpty(value.ToString()))
                    continue;
                str.AppendFormat("{0}={1}&", key, value);
            }
            str = str.Remove(str.Length-1,1);
            return str.ToString();
        }
        /// <summary>  
        /// 数据字典按Key的Ascii升序排列  
        /// </summary>  
        /// <param name="dic"></param>  
        /// <returns></returns>  
        public static Dictionary<string, Object> DictonarySortAscii(Dictionary<string, Object> dic)
        {
            string[] keys = dic.Keys.ToArray();
            Array.Sort(keys, string.CompareOrdinal);
            Dictionary<string, Object> newDic = new Dictionary<string, Object>();
            foreach (string key in keys)
            {
                Object value;
                dic.TryGetValue(key, out value);
                newDic.Add(key, value);
            }
            return newDic;
        }
/// <summary>
        /// 分隔&符号链接的字符串
        /// </summary>
        /// <param name="dataStr"></param>
        /// <returns></returns>
        public static Dictionary<string, string> SplitAndToDic(string dataStr)
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            string[] strList = dataStr.Split('&');
            foreach(string str in strList)
            {
                string[] kvStr = str.Split('=');
                dic.Add(kvStr[0],kvStr[1]);
            }
            return dic;
        }
相关文章
|
JavaScript Java 测试技术
基于小程序的4S店客户管理系统+springboot+vue.js附带文章和源代码设计说明文档ppt
基于小程序的4S店客户管理系统+springboot+vue.js附带文章和源代码设计说明文档ppt
109 0
|
Web App开发 Android开发
Android——WebView方式开发web App
       昨天接到个报酬丰厚的任务,把java新生系统做成webApp,想想蛮简单的,所以当时就装作很为难的样子答应了。            所谓Web App,用以前我那个老PM的话来说,就是在壳里面套上页面。
1219 0
|
14天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
缓存 并行计算 PyTorch
144_推理时延优化:Profiling与瓶颈分析 - 使用PyTorch Profiler诊断推理延迟,优化矩阵运算的独特瓶颈
在2025年的大模型时代,推理时延优化已经成为部署LLM服务的关键挑战之一。随着模型规模的不断扩大(从数亿参数到数千亿甚至万亿参数),即使在最先进的硬件上,推理延迟也常常成为用户体验和系统吞吐量的主要瓶颈。
341 147
|
9天前
|
机器学习/深度学习 存储 缓存
92_自我反思提示:输出迭代优化
在大型语言模型(LLM)应用日益普及的今天,如何持续提升模型输出质量成为了业界关注的核心问题。传统的提示工程方法往往依赖一次性输入输出,难以应对复杂任务中的多轮优化需求。2025年,自我反思提示技术(Self-Reflection Prompting)作为提示工程的前沿方向,正在改变我们与LLM交互的方式。这项技术通过模拟人类的自我反思认知过程,让模型能够对自身输出进行评估、反馈和优化,从而实现输出质量的持续提升。
392 136
|
3天前
|
人工智能 移动开发 自然语言处理
阿里云百炼产品月刊【2025年9月】
本月通义千问模型大升级,新增多模态、语音、视频生成等高性能模型,支持图文理解、端到端视频生成。官网改版上线全新体验中心,推出高代码应用与智能体多模态知识融合,RAG能力增强,助力企业高效部署AI应用。
223 1
|
13天前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
399 135
|
13天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
516 132
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话