C# 基础:DataTable操作、发邮件
本文出自:https://www.cnblogs.com/2186009311CFF/p/6865909.html
DataTable操作
据参数删除为0的列:包括遍历、删除、取值
public static DataTable GetNonzeroColDataTable(DataTable dt, Dictionary<string, string> chargeWayDic= null )
{
DataTable newdt = new DataTable();
try
{
#region 对筛选结果全部为0的列进行删除
List<string> delColAlist = new List<string>();//列值为0的列名的动态数组
bool IsZero = false;//列值为0的标志
for (int ic = 0; ic < dt.Columns.Count; ic++)
{
string strColumnName = dt.Columns[ic].ColumnName;
for (int jr = 0; jr < dt.Rows.Count; jr++)
{
if (chargeWayDic != null)//指定了一些列进行检查
{
#region 指定了一些列进行检查
if (!chargeWayDic.Keys.Contains(strColumnName)) continue;
double ivCompare = double.Parse(dt.Rows[jr][ic].ToString());
if (ivCompare == 0)
{
IsZero = true;
if ((jr == (dt.Rows.Count - 1)) && (IsZero))
{
if ((!delColAlist.Contains(strColumnName)) && (chargeWayDic.Keys.Contains(strColumnName)))
delColAlist.Add(strColumnName);
}
continue;
}
else
{
IsZero = false;
break;
}
#endregion
}
else//对所有列进行检查
{
try
{
double ivCompare = double.Parse(dt.Rows[jr][ic].ToString());
if (ivCompare == 0)
{
IsZero = true;
if ((jr == (dt.Rows.Count - 1)) && (IsZero))
{
if (!delColAlist.Contains(strColumnName))
delColAlist.Add(strColumnName);
}
continue;
}
else
{
IsZero = false;
break;
}
}
catch //不是数字的列忽略
{
break;
}
} }
}
newdt=GetNewDataTable(dt, delColAlist);
delColAlist.Clear();
#endregion
return newdt;//返回的查询结果
}
catch
{
return dt;
}
}
public static DataTable GetNewDataTable(DataTable dt, List<string> deleteColList)
{
DataTable newdt = new DataTable();
try
{
if (deleteColList != null)
{
if (dt != null)
{
foreach (string sdeleteCol in deleteColList)
{
if (!String.IsNullOrEmpty(sdeleteCol))
{
if (dt.Columns.Contains(sdeleteCol))
{
dt.Columns.Remove(sdeleteCol);//删除某列
}
} }
}
deleteColList.Clear();
} newdt = dt.Clone();
DataRow[] dr = dt.Select();
for (int i = 0; i < dr.Length; i++)
{
newdt.ImportRow((DataRow)dr[i]);
}
return newdt;//返回的查询结果
}
catch (Exception ex)
{
// MessageBox.Show(ex.Message);
return newdt;
}
}
包括遍历、删除、取值、列位置设置、新增列
DataColumn dataColumn = new DataColumn(列名变量);
var colIndex = table.Columns.IndexOf("列名");
table.Columns.Add(dataColumn);
dataColumn.SetOrdinal(colIndex);//列的位置
foreach (DataRow dR in table.Rows)
{
double dpaper = 0;
foreach (DataColumn col in table.Columns)
{
if (col.ColumnName.Contains ("元"))
{
string strColumnName = col.ColumnName.Substring(0, col.ColumnName.Length - 3); ;//列名去掉(元)
if (Dictionary.Keys.Contains(strColumnName))
{
dpaper += (double.Parse(dR[col.ColumnName].ToString()));
}
}
}
dR[列名变量] = (double.Parse(dR["列名"].ToString())) - dpaper;
}
table.Columns.Remove("删除列");
发邮件:实际操作注重灵活运用,需要建公共类的思想
static void Main(string[] args)
{ Addresser m_Addresser = new Addresser();
m_Addresser.User = "发件人账户";
m_Addresser.SendMailType = "qq";//发件人账户类型,此处为qq邮箱
m_Addresser.AuthorizationCode = "发件人授权码";//设置里开启STMP发信息获取
Addressee m_Addressee = new Addressee();
m_Addressee.User = "收件人账户";
m_Addressee.SendMailType = "163";//收件人账户类型,此处为163邮箱
MailContent m_MailContent = new MailContent();
m_MailContent.Tittle = "邮件主题";
m_MailContent.Subject = "邮件副标题";
m_MailContent.Body = "邮件内容"; SendQQMail.SendMail(m_Addresser,m_Addressee, m_MailContent);//发送邮件
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using static System.Net.Mime.MediaTypeNames; namespace SchemeOptimization.SendMail
{
public class SendQQMail
{
public static void SendMail(Addresser m_Addresser,Addressee m_Addressee, MailContent m_mailContent)
{
try
{
MailMessage msg = new MailMessage();
string addressee = m_Addressee.User + "@" + m_Addressee.SendMailType + ".com";
string addresser = m_Addresser.User + "@" + m_Addresser.SendMailType + ".com";
msg.To.Add(addressee);//收件人
msg.CC.Add(addressee);//抄送人 msg.From = new MailAddress(addresser, m_mailContent.Tittle ); msg.Subject = m_mailContent.Subject;
//标题格式为UTF8
msg.SubjectEncoding = Encoding.UTF8; msg.Body = m_mailContent.Body ;
//内容格式为UTF8
msg.BodyEncoding = Encoding.UTF8; SmtpClient client = new SmtpClient();
//SMTP服务器地址
client.Host = "smtp."+ m_Addresser.SendMailType + ".com";//发件人的邮件类型
//SMTP端口,QQ邮箱填写587
if (m_Addresser.SendMailType == "qq")//发件人的邮件类型对应的端口号
{
client.Port = 587;
}
else {
client.Port = 25;
} //启用SSL加密
client.EnableSsl = true; client.Credentials = new NetworkCredential(addresser, m_Addresser.AuthorizationCode);
//发送邮件
client.Send(msg);
//client.SendAsync(msg);
msg.Dispose();
}
catch (Exception ex)
{
WriteException(ex);
} }
/// <summary>
/// 写错误日志
/// </summary>
/// <param name="ex">异常</param>
/// <param name="msg">其他内容</param>
/// <param name="typestr">文件名</param>
public static void WriteException(Exception ex, string msg = "", string typestr = "")
{
try
{
if (!Directory.Exists("日志"))
Directory.CreateDirectory("日志");
using (
FileStream fs = File.Open(string.Format(".//日志\\Log_{0}.txt", DateTime.Now.ToString("yyyyMMdd")), FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
fs.Seek(0, SeekOrigin.End);
byte[] buffer = Encoding.Default.GetBytes("-------------------------\r\n");
fs.Write(buffer, 0, buffer.Length); buffer = Encoding.Default.GetBytes(DateTime.Now.ToString() + "\r\n");
fs.Write(buffer, 0, buffer.Length); buffer = Encoding.Default.GetBytes("信息:" + msg + "\r\n");
fs.Write(buffer, 0, buffer.Length); if (ex != null)
{
buffer = Encoding.Default.GetBytes("成员名: " + ex.TargetSite + "\r\n");
fs.Write(buffer, 0, buffer.Length); buffer = Encoding.Default.GetBytes("引发异常的类: " + ex.TargetSite.DeclaringType + "\r\n");
fs.Write(buffer, 0, buffer.Length); buffer = Encoding.Default.GetBytes("异常信息: " + ex.Message + "\r\n");
fs.Write(buffer, 0, buffer.Length); buffer = Encoding.Default.GetBytes("引发异常的程序集或对象: " + ex.Source + "\r\n");
fs.Write(buffer, 0, buffer.Length); buffer = Encoding.Default.GetBytes("栈:" + ex.StackTrace + "\r\n");
fs.Write(buffer, 0, buffer.Length);
} fs.Close();
}
}
catch
{ }
} }
/// <summary>
/// 收件人
/// </summary>
public class Addressee
{
/// <summary>
/// 账号
/// </summary>
public string User;
/// <summary>
/// 发送邮件类型
/// </summary>
public string SendMailType;
}
/// <summary>
/// 发件人
/// </summary>
public class Addresser
{
/// <summary>
///
/// </summary>
public string User;
/// <summary>
///
/// </summary>
public string SendMailType;
/// <summary>
/// 授权码,在设置里开启SMIP服务
/// 服务器响应为:mail from address must be same as authorization user
/// 是因为没有设置开启SMIP服务
/// </summary>
public string AuthorizationCode; }
public class MailContent
{
/// <summary>
///
/// </summary>
public string Tittle;
/// <summary>
///
/// </summary>
public string Subject;
/// <summary>
///
/// </summary>
public string Body; }
C# 基础:DataTable操作、发邮件的更多相关文章
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课
centos shell基础知识 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 ...
- 代码控制打电话、发短信、发邮件、打开手机app等操作
很多时候我们需要利用我门自己的app进行一些打电话.发短信等的操作,那么如何利用代码实现呢,下面就介绍一些简单的方法来实现这些操作. 一.打电话: <1>最简单.最直接的方法----直接跳 ...
- python语言(六)mock接口开发、发邮件、写日志、新Excel操作
一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...
- python基础-发邮件smtp
先来想下发送邮件需要填写什么,还需要有什么条件1.与邮件服务器建立连接,用户名和密码2.发邮件:发件人,收件人,主题,内容,附件3.发送 使用第三方邮箱发送邮件 #! /usr/bin/env pyt ...
- Linux搭建smtp服务器+laravel5.2发邮件配置
/** * 这里主要是想通过自己搭建smtp服务器,配置laravel5.2框架,实现邮箱发邮件功能, * 主要内容是搭建smtp服务器,laravel5.2发邮件顺手提一下 */ /** * 1.l ...
- PHP实例开发(2)PHP通过mail()或Socket发邮件
PHP通过mail()或Socket发邮件 1.PHP中发送邮件的方法 PHP发送邮件是“非常的简单” 因为他提供了mail()函数直接发送,但这也继 register globals 成为了对初学者 ...
- IOS,发短信,发邮件,打电话
今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点.1.1.发短信(1)——URL // ...
- ActiveMQ JMS 在发邮件中的使用
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...
- 【Python系列】Python自动发邮件脚本-html邮件内容
缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...
随机推荐
- TField中的GetText和SetText
在数据表中的某些字段出于性能或数据规范化的考虑,会用组编号代替,就像学生有学号,员工有员工ID一样,但我们看的时候如果直接输入这样的编号看的人可能就会头痛了,这时就可用TField中的GetText转 ...
- expect实战
1.测试主机是否在线 #!/bin/bash#创建一个IP地址文件.>ip.txt (清空文本)#使用for循环ping测试主机是否在线.for i in {2..254}do ...
- unittest中的断言方法
方法 用途 assertEqual(a,b) a=b assertNotEqual(a,b) a!=b assertTrue(x) x为True assertFa ...
- Java实验报告(一)
1.水仙花数 public class test1{ public static void main(String[] args){ for(int num=100;num<1000;num++ ...
- asp.net获取访问者ip地址的函数
/// <summary> /// 获取IP地址 /// </summary> public static string IPAddress { get { string us ...
- 用adb logcat抓取log
实时打印的主要有:logcat main,logcat radio,logcat events,tcpdump,还有高通平台的还会有QXDM日志 状态信息的有:adb shell dmesg, ...
- 【狗屁不通文章生成器】代码分析 (javaScript)
这几天在论坛上看到了一个很有意思的项目,一个生成"狗屁不通"的文章的程序.经过本人确定其的确是"狗屁不通"后,随后又好奇其实现,于是在其[GitHub]项目里( ...
- Comet OJ C1076 [Contest #4]求和
题目 首先我们可以通过经典容斥转化为计算\([1,x]\)的答案. 现在我们考虑一个数的个位对答案的贡献. 每做一次操作都会让个位加上十位然后取模,直到只有个位为止. 我们发现这个过程中,个位数前的系 ...
- 小白学Python(20)—— Turtle 海龟绘图
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- 阿里云服务器重启出现An error occurred 如何处理
最近网站重启阿里云服务后,出现 An error occurred, An error occurred. Sorry, the page you are looking for is current ...