`
zheyiw
  • 浏览: 1020011 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

C#工具类

    博客分类:
  • C#
c# 
阅读更多
using System;
using System.Collections.Generic;
using System.Data;
using ManageForm.ServiceComm;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace ManageForm.Comm
{
    public class Util
    {

        public static ExcuteLabelRequest GetRequest(string label, string[] paramArr)
        {
            ExcuteLabelRequest request = new ExcuteLabelRequest();
            request.APIKey = Login.ApiKey;
            request.SessionKey = Login.SessionKey;
            request.UserID = Login.UserID;
            request.label = label;
            request.list = paramArr;
            return request;
        }

        public static SubmitTableRequest GetSubmitTableRequest(string label, string[][] paramArr)
        {
            SubmitTableRequest request = new SubmitTableRequest();
            request.APIKey = Login.ApiKey;
            request.SessionKey = Login.SessionKey;
            request.UserID = Login.UserID;
            request.label = label;
            request.list = paramArr;
            return request;
        }

        //--------------------------基本方法----------------------
        #region 求浮点型数小数
        /// <summary>
        /// 求浮点型数小数,小数位最后面的0去掉
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static decimal ToDecimal(object obj)
        {
            if (obj + "" != "")
            {
                try
                {
                    decimal dm = Convert.ToDecimal(obj);

                    string str = dm.ToString("#.#########");//去除小数点后的0
                    if (str == "")
                    {
                        str = "0";
                    }

                    dm = decimal.Parse(str);

                    return dm;
                }
                catch
                {
                    return 0.0m;
                }
                // return Convert.ToDecimal(obj);
            }
            return 0.0m;
        }

        /// <summary>
        /// 求浮点型数小数,小数位最后面的0去掉,并截取指定位数小数位
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="precision"></param>
        /// <returns></returns>
        public static decimal ToDecimal(object obj, int digit)
        {
            if (obj + "" != "")
            {
                try
                {
                    decimal dm = Convert.ToDecimal(obj);

                    string str = dm.ToString("#.#########");//去除小数点后的0
                    if (str == "")
                    {
                        str = "0";
                    }

                    dm = decimal.Parse(str);

                    return decimal.Round(dm, digit, MidpointRounding.AwayFromZero);
                }
                catch
                {
                    return 0.0m;
                }
                // return Convert.ToDecimal(obj);
            }
            return 0.0m;
        }
        #endregion

        //格式化到整数,不会报错
        public static int ToInt(object var)
        {
            try
            {
                return Convert.ToInt32(var);
            }
            catch
            {
                return 0;
            }
        }

        //IsNullOrWhiteSpace
        public static bool isNull(string str)
        {
            if (string.IsNullOrWhiteSpace(str))
            {
                return true;
            }
            if (string.IsNullOrEmpty(str))
            {
                return true;
            }
            return false;
        }

        //表格对象为空,或者没有行
        public static bool isNull(DataTable dt)
        {
            if (null == dt || dt.Rows.Count <= 0)
            {
                return true;
            }
            return false;
        }

        //数据集对象为空,或者没有没有,或者表中没有行
        public static bool isNull(DataSet ds)
        {
            if (null == ds || null == ds.Tables || ds.Tables.Count <= 0 || isNull(ds.Tables[0]))
            {
                return true;
            }
            return false;
        }

        //数据集对象为空,或者没有没有,或者表中没有行
        public static string timeFormate()
        {
            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

        public static string ToMD5(string str)
        {
            //return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
            return "";
        }

        protected virtual IList<string> DataSetToArrayList(DataSet ds)
        {
            IList<string> WhereStr = new List<string>();
            DataRow dr;

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                dr = ds.Tables[0].Rows[i];
                if (dr[0].ToString().Trim().Length != 0)
                {
                    WhereStr.Add(dr[0].ToString());
                }
            }
            return WhereStr;
        }

        protected virtual string[] DataSetToList(DataSet ds)
        {
            string[] SqlList = new string[ds.Tables[0].Rows.Count];
            DataRow dr;

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                dr = ds.Tables[0].Rows[i];
                if (dr[0].ToString().Trim().Length != 0)
                {
                    SqlList[i] = dr[0].ToString();
                }
            }
            return SqlList;
        }

        /// <summary>
        /// 将Byte数据反序列化成DataSet
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static DataSet ByteToDataSet(byte[] buffer)
        {
            DataSet tempDS = null;
            //解压压缩流
            byte[] bytes = Compression(buffer, CompressionMode.Decompress);
            MemoryStream stream = new MemoryStream(bytes);
            IFormatter formatter = new BinaryFormatter();
            //反序列化
            tempDS = (DataSet)formatter.Deserialize(stream);
            stream.Close();
            return tempDS;
        }

        /// <summary>
        /// 将Byte数据反序列化成DataSet
        /// </summary>
        /// <param name="buffer"></param>
        /// <returns></returns>
        public static DataTable ByteToDataTable(byte[] buffer)
        {
            DataTable tempDS = null;
            //解压压缩流
            byte[] bytes = Compression(buffer, CompressionMode.Decompress);
            MemoryStream stream = new MemoryStream(bytes);
            IFormatter formatter = new BinaryFormatter();
            //反序列化
            tempDS = (DataTable)formatter.Deserialize(stream);
            stream.Close();
            return tempDS;
        }

        /// <summary>
        /// 将DataSet数据序列化成Byte
        /// </summary>
        /// <param name="tempDS"></param>
        /// <returns></returns>
        public static byte[] DataSetToByte(DataSet tempDS)
        {
            IFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            formatter.Serialize(stream, tempDS);
            byte[] buffer_all = stream.ToArray();
            stream.Close();

            byte[] bytes_c = Compression(buffer_all, CompressionMode.Compress);
            return bytes_c;
        }

        /// <summary>
        /// 将DataTable数据序列化成Byte
        /// </summary>
        /// <param name="tempDS"></param>
        /// <returns></returns>
        public static byte[] DataTableToByte(DataTable tempTable)
        {
            IFormatter formatter = new BinaryFormatter();
            MemoryStream stream = new MemoryStream();
            formatter.Serialize(stream, tempTable);
            byte[] buffer_all = stream.ToArray();
            stream.Close();

            byte[] bytes_c = Compression(buffer_all, CompressionMode.Compress);
            return bytes_c;
        }

        /// <summary>
        /// 解压缩/压缩
        /// </summary>
        /// <param name="data">数据</param>
        /// <param name="mode"></param>
        /// <returns></returns>
        public static byte[] Compression(byte[] data, CompressionMode mode)
        {
            DeflateStream zip = null;
            try
            {
                if (mode == CompressionMode.Compress)
                {
                    MemoryStream ms = new MemoryStream();
                    zip = new DeflateStream(ms, mode, true);
                    zip.Write(data, 0, data.Length);
                    zip.Close();
                    return ms.ToArray();
                }
                else
                {
                    MemoryStream ms = new MemoryStream();
                    ms.Write(data, 0, data.Length);
                    ms.Flush();
                    ms.Position = 0;
                    zip = new DeflateStream(ms, mode, true);
                    MemoryStream os = new MemoryStream();
                    int SIZE = 1024;
                    byte[] buf = new byte[SIZE];
                    int l = 0;
                    do
                    {
                        l = zip.Read(buf, 0, SIZE);
                        if (l == 0) l = zip.Read(buf, 0, SIZE);
                        os.Write(buf, 0, l);
                    } while (l != 0);
                    zip.Close();
                    return os.ToArray();
                }
            }
            catch
            {
                if (zip != null) zip.Close();
                return null;
            }
            finally
            {
                if (zip != null) zip.Close();
            }
        }

        /// <summary>
        /// 分解数据表
        /// </summary>
        /// <param name="originalTab">需要分解的表</param>
        /// <param name="rowsNum">每个表包含的数据量</param>
        /// <returns></returns>
        public static DataSet SplitDataTable(DataTable sourceTable, int rowsNum)
        {
            //获取所需创建的表数量
            int tableNum = sourceTable.Rows.Count / rowsNum;
            //获取数据余数
            int remainder = sourceTable.Rows.Count % rowsNum;

            DataSet ds = new DataSet();

            //如果只需要创建1个表,直接将原始表存入DataSet
            if (tableNum == 0)
            {
                ds.Tables.Add(sourceTable);
            }
            else
            {
                DataTable[] tableSlice = new DataTable[tableNum];

                //Save orginal columns into new table.
                for (int c = 0; c < tableNum; c++)
                {
                    tableSlice[c] = new DataTable();
                    foreach (DataColumn dc in sourceTable.Columns)
                    {
                        tableSlice[c].Columns.Add(dc.ColumnName, dc.DataType);
                    }
                }
                //Import Rows
                for (int i = 0; i < tableNum; i++)
                {
                    // if the current table is not the last one
                    if (i != tableNum - 1)
                    {
                        for (int j = i * rowsNum; j < ((i + 1) * rowsNum); j++)
                        {
                            tableSlice[i].ImportRow(sourceTable.Rows[j]);
                        }
                    }
                    else
                    {
                        for (int k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++)
                        {
                            tableSlice[i].ImportRow(sourceTable.Rows[k]);
                        }
                    }
                }

                //add all tables into a dataset                
                foreach (DataTable dt in tableSlice)
                {
                    ds.Tables.Add(dt);
                }
            }
            return ds;
        }
    }
}
分享到:
评论

相关推荐

    C#工具类库类库 包含所有的常用工具类

    标题中的"C#工具类库类库 包含所有的常用工具类"暗示了这是一个集合,包含了多种实用工具类,能够极大地提升开发效率。这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行...

    Redis C# 工具类

    在C#开发中,我们经常需要创建工具类来方便地操作Redis。`Redis C# 工具类`是这样的一个辅助类库,它封装了对Redis的各种基本操作,包括Key、String、Set、SortSet和List等数据结构的管理。 首先,`Cache.config`...

    c#工具类源码大全

    "c#工具类源码大全"是一个集合了多种实用工具类的资源包,可以帮助开发者快速实现各种功能,提高开发效率。下面我们将详细探讨这个资源包中包含的一些关键知识点。 1. ASP.NET类库: ASP.NET是微软提供的一个用于...

    个人用的C#日常开发工具类

    C#工具类通常是一些预定义的、可重用的代码集合,这些代码封装了特定的逻辑或操作,以提高开发效率。它们可以是简单的数据结构,如堆栈、队列,也可以是复杂的算法实现,如排序、搜索。开发者可以将这些工具类集成到...

    Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity

    在C#编程中,"Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity"这个压缩包很可能包含了一系列用于日常开发的实用工具类,这些类通常是为了提高代码复用性和简化开发过程而设计的。下面将详细介绍...

    C#常用工具类代码集合Util(自己工作总结)

    C#工具类的编写是提高代码复用性和可维护性的重要手段,它们遵循单一职责原则,每个方法专注于完成一个特定的任务。同时,良好的工具类库应该有明确的命名,合理的API设计,以及充分的注释,以便其他开发者能快速...

    c# 操作工具类-好用的类库

    首先,让我们了解如何创建一个基础的C#工具类。通常,工具类是以静态类的形式存在的,因为它们不需要实例化,可以直接通过类名调用方法。例如,我们可以创建一个名为`Helper`的工具类: ```csharp public static ...

    迅雷C#工具类及Demo,完美接入迅雷云加速开放平台SDK

    这个压缩包文件包含了使用C#编写的工具类和一个Demo项目,目的是帮助开发者更好地理解和实现迅雷云加速功能。 首先,`ThunderDemo.sln`是一个Visual Studio解决方案文件,它包含了项目的配置信息,如引用的库、项目...

    自己写的一个C#工具类,功能很简单,但是很实用

    自己写的一个C#工具类,功能很简单,但是很实用,觉得有用就下吧。 主要的方法有:更简单的截取字符串方法, 格式化布尔值返回checkbox或指定的字符串, 格式化日期并以固定格式返回, 传递recordCount和pageSize...

    C#常用工具类代码集合Util第二版本(自己工作总结)

    C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...

    C# 工具类

    在编写C#工具类时,为了保持代码的可读性和可维护性,还需要遵循良好的命名规范,合理地组织方法,并添加适当的注释。此外,可以利用泛型、扩展方法等C#特性来增强工具类的功能和灵活性。 总的来说,C#工具类是提高...

    OpencvSharp+PaddleOcr+雷电模拟器C# 工具类库.zip

    4. **C#工具类库**: 这个项目的重点是C#编程,工具类库通常包含一系列预先封装好的函数和类,方便开发者在不同的场景下快速调用,提高代码复用性。在这个案例中,类库可能包括了与OpenCV和PaddleOcr交互的接口,简化...

    自己整理的C#常用工具类

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。这些工具类通常包含静态方法,不涉及实例化,直接通过类名调用,降低了代码冗余,提高了代码复用...

    C# Util 实用工具类

    C# Util中的Json工具类通常提供了序列化和反序列化JSON对象的方法,如将C#对象转换为JSON字符串,或者将JSON字符串解析为C#对象,这在处理API请求或保存配置文件时非常有用。 2. **Net**: 这部分可能包含网络通信...

    C# 工具类 泛型转JSON(Newtonsoft.Json)

    C# 工具类 泛型转JSON 使用 Newtonsoft.Json 转换JSON

    a c# utility library. C#工具包,C#工具类,常用方法,系统API,文件处理、加

    C#工具包,C#工具类,常用方法,系统API,文件处理、加密解密、Winform美化(C# Tools).zip优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的...

    C# 工具类 泛型转JSON(.Net Framework 4.0)

    C# 工具类 泛型转JSON 使用4.0 System.Runtime.Serialization.Json 进行JSON装换

    sqlite 数据库操作C# 工具类及使用实例

    本篇文章将深入探讨如何在C#中使用SQLite数据库,以及在VS2010下创建和操作SQLite数据库的工具类和实例。 首先,我们需要引入对SQLite的引用。在VS2010中,可以通过NuGet包管理器安装System.Data.SQLite库。这个库...

    C#200个工具类大全

    C#200个工具类大全

    C# 常用工具类

    C# 常用工具类:时间转化,获取网页源码,按照一定比例保存图片,获取四位随机数,下载到本地的文件完整路径, unicode转中文(符合js规则的), 移动文件,UBBHelper代码处理函数 等等

Global site tag (gtag.js) - Google Analytics