现在有很多文件需要操作,文件可以大致分为4类,怎么将他们分类,进行相应操作,请各位说说想法

解决方案 »

  1.   

    linq to dataset: if (dt.Rows.Count > 0)//有数据才进行操作
                        {
                            string other = null;
                            string operators = null;
                            string filenames = null;
                            string sizes = null;
                            string strdate = null;
                            string logids = null;
                            var query1 =                            from pl in dt.AsEnumerable()
                                orderby pl.Field<decimal>("logsequence"), pl.Field<string>("logtime")
                                group pl by pl.Field<string>("logtime")
                                    into temppl
                                    select new { Desc = temppl.Key, Total = temppl.Count(), detail = temppl, AA = temppl.ToArray() };
                            var query2 = query1;
                            /*********准备数据**********************************************************************/                        string oper1 = null;
                            string ids1 = null;
                            string date1 = null;
                            string size1 = null;
                            string fpname1 = null;
                            string other1 = null;
                            List<string> Lopcr = new List<string>();//opencreate
                            List<string> Ldelete = new List<string>();//delete                        List<string> LdeleteLeft = new List<string>();
                            foreach (var item1 in query1)//筛选出"open,create"和"delete"日志
                            {
                                if (item1.Total == 2 || item1.Total == 1)
                                {
                                    oper1 = null;//清除历史数据
                                    ids1 = null;//清除历史数据
                                    date1 = null;//清除历史数据
                                    size1 = null;//清除历史数据
                                    other1 = null;
                                    fpname1 = null;
                                    DataRow[] a = (DataRow[])item1.AA;//分组
                                    for (int i = 0; i < a.Length; i++)
                                    {                                    ids1 = ids1 + a[i].Field<string>("tmplogid") + "*";
                                        oper1 = oper1 + a[i].Field<string>("operator") + "*";
                                        fpname1 = fpname1 + a[i].Field<string>("filename") + "*";
                                        size1 = size1 + a[i].Field<string>("filesize") + "*";
                                        date1 = date1 + a[i].Field<string>("logtime") + "*";
                                        other1 = other1 + a[i].Field<string>("other") + "*";                                }//end for (int i = 0; i < a.Length; i++)                                if (item1.Total == 2 && oper1.Trim('*').ToLower() == "open*create")
                                    {
                                        string tempstr = ids1.Trim('*') + "?" + oper1.Trim('*') + "?" + fpname1.Trim('*') + "?" + size1.Trim('*') + "?" + date1.Trim('*') + "?" + other1.Trim('*');
                                        Lopcr.Add(tempstr);
                                        continue;
                                    }                                if (item1.Total == 1 && oper1.Trim('*').ToLower() == "delete")
                                    {
                                        string tempstr = ids1.Trim('*') + "?" + oper1.Trim('*') + "?" + fpname1.Trim('*') + "?" + size1.Trim('*') + "?" + date1.Trim('*') + "?" + other1.Trim('*');
                                        Ldelete.Add(tempstr);
                                        continue;
                                    }
                                }//end  if (item1.Total == 2 || item1.Total == 1)                        }//end foreach (var item1 in query1)//筛选出"open,create"
    ..............
      

  2.   

    "group pl by pl.Field<string>("logtime")"我这句按照时间来分组,logtime相同的会被分在一组里面。
      

  3.   

     DataRow[] a = (DataRow[])item1.AA;//分组
    在这里,数组a里全部是logtime相同的数据的记录