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#工具类库类库 包含所有的常用工具类"暗示了这是一个集合,包含了多种实用工具类,能够极大地提升开发效率。这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行...
在C#开发中,我们经常需要创建工具类来方便地操作Redis。`Redis C# 工具类`是这样的一个辅助类库,它封装了对Redis的各种基本操作,包括Key、String、Set、SortSet和List等数据结构的管理。 首先,`Cache.config`...
"c#工具类源码大全"是一个集合了多种实用工具类的资源包,可以帮助开发者快速实现各种功能,提高开发效率。下面我们将详细探讨这个资源包中包含的一些关键知识点。 1. ASP.NET类库: ASP.NET是微软提供的一个用于...
C#工具类通常是一些预定义的、可重用的代码集合,这些代码封装了特定的逻辑或操作,以提高开发效率。它们可以是简单的数据结构,如堆栈、队列,也可以是复杂的算法实现,如排序、搜索。开发者可以将这些工具类集成到...
在C#编程中,"Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity"这个压缩包很可能包含了一系列用于日常开发的实用工具类,这些类通常是为了提高代码复用性和简化开发过程而设计的。下面将详细介绍...
C#工具类的编写是提高代码复用性和可维护性的重要手段,它们遵循单一职责原则,每个方法专注于完成一个特定的任务。同时,良好的工具类库应该有明确的命名,合理的API设计,以及充分的注释,以便其他开发者能快速...
首先,让我们了解如何创建一个基础的C#工具类。通常,工具类是以静态类的形式存在的,因为它们不需要实例化,可以直接通过类名调用方法。例如,我们可以创建一个名为`Helper`的工具类: ```csharp public static ...
这个压缩包文件包含了使用C#编写的工具类和一个Demo项目,目的是帮助开发者更好地理解和实现迅雷云加速功能。 首先,`ThunderDemo.sln`是一个Visual Studio解决方案文件,它包含了项目的配置信息,如引用的库、项目...
自己写的一个C#工具类,功能很简单,但是很实用,觉得有用就下吧。 主要的方法有:更简单的截取字符串方法, 格式化布尔值返回checkbox或指定的字符串, 格式化日期并以固定格式返回, 传递recordCount和pageSize...
C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...
在编写C#工具类时,为了保持代码的可读性和可维护性,还需要遵循良好的命名规范,合理地组织方法,并添加适当的注释。此外,可以利用泛型、扩展方法等C#特性来增强工具类的功能和灵活性。 总的来说,C#工具类是提高...
4. **C#工具类库**: 这个项目的重点是C#编程,工具类库通常包含一系列预先封装好的函数和类,方便开发者在不同的场景下快速调用,提高代码复用性。在这个案例中,类库可能包括了与OpenCV和PaddleOcr交互的接口,简化...
在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。这些工具类通常包含静态方法,不涉及实例化,直接通过类名调用,降低了代码冗余,提高了代码复用...
C# Util中的Json工具类通常提供了序列化和反序列化JSON对象的方法,如将C#对象转换为JSON字符串,或者将JSON字符串解析为C#对象,这在处理API请求或保存配置文件时非常有用。 2. **Net**: 这部分可能包含网络通信...
C# 工具类 泛型转JSON 使用 Newtonsoft.Json 转换JSON
C#工具包,C#工具类,常用方法,系统API,文件处理、加密解密、Winform美化(C# Tools).zip优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的...
C# 工具类 泛型转JSON 使用4.0 System.Runtime.Serialization.Json 进行JSON装换
本篇文章将深入探讨如何在C#中使用SQLite数据库,以及在VS2010下创建和操作SQLite数据库的工具类和实例。 首先,我们需要引入对SQLite的引用。在VS2010中,可以通过NuGet包管理器安装System.Data.SQLite库。这个库...
C#200个工具类大全
C# 常用工具类:时间转化,获取网页源码,按照一定比例保存图片,获取四位随机数,下载到本地的文件完整路径, unicode转中文(符合js规则的), 移动文件,UBBHelper代码处理函数 等等