zoukankan      html  css  js  c++  java
  • 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("-------------------------
    ");
                        fs.Write(buffer, 0, buffer.Length);
    
                        buffer = Encoding.Default.GetBytes(DateTime.Now.ToString() + "
    ");
                        fs.Write(buffer, 0, buffer.Length);
    
                        buffer = Encoding.Default.GetBytes("信息:" + msg + "
    ");
                        fs.Write(buffer, 0, buffer.Length);
    
                        if (ex != null)
                        {
                            buffer = Encoding.Default.GetBytes("成员名: " + ex.TargetSite + "
    ");
                            fs.Write(buffer, 0, buffer.Length);
    
                            buffer = Encoding.Default.GetBytes("引发异常的类: " + ex.TargetSite.DeclaringType + "
    ");
                            fs.Write(buffer, 0, buffer.Length);
    
                            buffer = Encoding.Default.GetBytes("异常信息: " + ex.Message + "
    ");
                            fs.Write(buffer, 0, buffer.Length);
    
                            buffer = Encoding.Default.GetBytes("引发异常的程序集或对象: " + ex.Source + "
    ");
                            fs.Write(buffer, 0, buffer.Length);
    
                            buffer = Encoding.Default.GetBytes("栈:" + ex.StackTrace + "
    ");
                            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;
           
    
        }
    

      

  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/2186009311CFF/p/6865909.html
Copyright © 2011-2022 走看看