dataTable干练代码groupby

来源:互联网 发布:js小于或等于 编辑:程序博客网 时间:2024/06/07 11:33
/// <summary>        /// 根据车辆牌照匹配两个dataTable的行,不匹配的删掉        /// </summary>        /// <param name="dtTemp2">附件2的模板数据</param>        /// <param name="dtTemp3">附件3的模板数据</param>        /// <returns></returns>        private string MatchDataTable(ref DataTable dtTemp2, ref DataTable dtTemp3)        {            string msg = string.Empty;            dtTemp2 = dtTemp2.AsEnumerable().Cast<DataRow>().GroupBy(p => p.Field<string>("VIN") + p.Field<string>("CLPZ")).Select(p => p.FirstOrDefault()).CopyToDataTable();            //dtTemp2 = dtTemp2.AsEnumerable().Cast<DataRow>().GroupBy(p => p.Field<string>("CLPZ")).Select(p => p.FirstOrDefault()).CopyToDataTable();            dtTemp3 = dtTemp3.AsEnumerable().Cast<DataRow>().GroupBy(p => p.Field<string>("CLPZ")).Select(p => p.FirstOrDefault()).CopyToDataTable();            var clpzArr2 = dtTemp2.AsEnumerable().Select(d => d.Field<string>("CLPZ")).Distinct().ToArray();            var clpzArr3 = dtTemp3.AsEnumerable().Select(d => d.Field<string>("CLPZ")).Distinct().ToArray();            var clpzOutArr2 = (from t2 in dtTemp2.AsEnumerable()                               where !clpzArr3.Contains(t2.Field<string>("CLPZ"))                               select t2.Field<string>("CLPZ")).ToArray<string>();            var clpzOutArr3 = (from t3 in dtTemp3.AsEnumerable()                               where !clpzArr2.Contains(t3.Field<string>("CLPZ"))                               select t3.Field<string>("CLPZ")).ToArray<string>();            var dt2 = from t2 in dtTemp2.AsEnumerable()                      where clpzArr3.Contains(t2.Field<string>("CLPZ"))                      select t2;            var dt3 = from t3 in dtTemp3.AsEnumerable()                      where clpzArr2.Contains(t3.Field<string>("CLPZ"))                      select t3;            if (dt2.Count() > 0)            {                dtTemp2 = dt2.CopyToDataTable(); ;            }            else            {                dtTemp2.Clear();            }            if (dt3.Count() > 0)            {                dtTemp3 = dt3.CopyToDataTable(); ;            }            else            {                dtTemp3.Clear();            }            if (clpzOutArr2.Length > 0)                msg += String.Format("附件2*.xlsx车辆牌照:{0}在附件3*.xlsx中没有找到对应信息!{1}", string.Join(",", clpzOutArr2), Environment.NewLine);            if (clpzOutArr3.Length > 0)                msg += String.Format("附件3*.xlsx车辆牌照:{0}在附件2*.xlsx中没有找到对应信息!{1}", string.Join(",", clpzOutArr3), Environment.NewLine);            return msg;        }

原创粉丝点击