本文出自: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操作、发邮件的更多相关文章

  1. 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配置文件 ...

  2. 代码控制打电话、发短信、发邮件、打开手机app等操作

    很多时候我们需要利用我门自己的app进行一些打电话.发短信等的操作,那么如何利用代码实现呢,下面就介绍一些简单的方法来实现这些操作. 一.打电话: <1>最简单.最直接的方法----直接跳 ...

  3. python语言(六)mock接口开发、发邮件、写日志、新Excel操作

    一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...

  4. python基础-发邮件smtp

    先来想下发送邮件需要填写什么,还需要有什么条件1.与邮件服务器建立连接,用户名和密码2.发邮件:发件人,收件人,主题,内容,附件3.发送 使用第三方邮箱发送邮件 #! /usr/bin/env pyt ...

  5. Linux搭建smtp服务器+laravel5.2发邮件配置

    /** * 这里主要是想通过自己搭建smtp服务器,配置laravel5.2框架,实现邮箱发邮件功能, * 主要内容是搭建smtp服务器,laravel5.2发邮件顺手提一下 */ /** * 1.l ...

  6. PHP实例开发(2)PHP通过mail()或Socket发邮件

    PHP通过mail()或Socket发邮件 1.PHP中发送邮件的方法 PHP发送邮件是“非常的简单” 因为他提供了mail()函数直接发送,但这也继 register globals 成为了对初学者 ...

  7. IOS,发短信,发邮件,打电话

    今天把APP里常用小功能 例如发短信.发邮件.打电话.全部拿出来简单说说它们的实现思路. 1.发短信实现打电话的功能,主要二种方法,下面我就分别说说它们的优缺点.1.1.发短信(1)——URL // ...

  8. ActiveMQ JMS 在发邮件中的使用

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...

  9. 【Python系列】Python自动发邮件脚本-html邮件内容

    缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...

随机推荐

  1. Java使用JDBC连接Impala

    前段时间,有一个项目在连接Impala的时候,可以测试连接成功,但是查询不出表.但是通过impala-shell的时候,是可以查询出来的,我觉的这种方式查询出来的话,可能和jdbc的方式不一样,因为i ...

  2. Mac021--编辑软件

    一.思维导图MindNode 知乎Mac常用的思维导图:https://zhuanlan.zhihu.com/p/37768277 MindNode下载地址:https://macblcom.ctfi ...

  3. 多线程17-Async Programming Model

        );             ThreadId = Thread.CurrentThread.ManagedThreadId;             ;             RunOnT ...

  4. OracleOraDb11g_home1TNSListener服务无法启动

    作者:伪墨 来源:CSDN 原文:https://blog.csdn.net/qq997404392/article/details/73296429 今天遇到OracleOraDb11g_home1 ...

  5. 获取kafka最新offset-scala

    无论是在spark streaming消费kafka,或是监控kafka的数据时,我们经常会需要知道offset最新情况 kafka数据的topic基于分区,并且通过每个partition的主分区可以 ...

  6. oracle跟SQL Server 2005 的区别

    Oracle与Sql server的区别   一直搞不明白Oracle数据库和sql server的区别,今天我特意查资料把他们的区别整理出来 Oracle数据库:Oracle Database,又名 ...

  7. [Codeforces 1214D]Treasure Island(dfs)

    [Codeforces 1214D]Treasure Island(dfs) 题面 给出一个n*m的字符矩阵,'.'表示能通过,'#'表示不能通过.每步可以往下或往右走.问至少把多少个'.'变成'#' ...

  8. Vue:Elementui中的Tag与页面其它元素相互交互的两三事

    前言 公司系统在用elementui做后台开发,不免遇到一些需要自己去根据原有的功能上,加一些交互的功能.今天来介绍下我在用elementUi里的Tag标签与多选框交互的过程,东西听上去很简单,但就是 ...

  9. WPF拖拽文件(拖入拖出),监控拖拽到哪个位置,类似百度网盘拖拽

    1.往wpf中拖文件 // xaml <Grid x:Name="grid_11" DragOver="Grid_11_DragOver" Drop=&q ...

  10. iOS微信浏览器回退不刷新(监听浏览器回退事件)

    兼容性:兼容全部ios系统 $(function(){ pushHistory(); }); function pushHistory(){ window.addEventListener(" ...