private void selectFileBtn_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Multiselect = true;
            fileDialog.Title       = "请选择文件";
            //fileDialog.Filter = "所有文件(*xls*)|*.xls*"; //设置要选择的文件的类型
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                PFWinFormHelper.GridClear(fileDGView);
                foreach (var path in fileDialog.FileNames)
                {
                    var fileName = Path.GetFileName(path);
                    var i        = fileDGView.Rows.Add();
                    TxtFileEncoder.PFEncoding encode = TxtFileEncoder.GetPFEncoding((Stream) new FileStream(path, FileMode.Open));
                    fileDGView.Rows[i].Cells["FileName"].Value   = path;
                    fileDGView.Rows[i].Cells["FileEncode"].Value = encode;

                    //TxtFileEncoder.GetEncoding(i);
                    ////Encoding encode = TxtFileEncoder.GetEncoding(i);
                    //Encoding encode = TxtFileEncoder.GetEncoding((Stream)new FileStream(i, FileMode.Open));
                    //string s = PFDataHelper.ReadFileToString(i, encode);
                    //PFDataHelper.SaveStringToFile(s,Path.Combine(PFDataHelper.BaseDirectory,"OutFile",Path.GetFileName(i)));
                }
                //System.Diagnostics.Process.Start(Path.Combine(PFDataHelper.BaseDirectory, "OutFile"));
            }
        }
        //private void selectSrcBtn_Click(object sender, EventArgs e)
        //{
        //    FolderBrowserDialog fileDialog = new FolderBrowserDialog();
        //    //fileDialog.Multiselect = true;
        //    fileDialog.Description = "请选择src文件夹";
        //    //fileDialog.Filter = "所有文件(*xls*)|*.xls*"; //设置要选择的文件的类型
        //    if (fileDialog.ShowDialog() == DialogResult.OK)
        //    {
        //        srcTBox.Text = fileDialog.SelectedPath;
        //    }
        //}

        //private void selectDstBtn_Click(object sender, EventArgs e)
        //{
        //    FolderBrowserDialog fileDialog = new FolderBrowserDialog();
        //    //fileDialog.Multiselect = true;
        //    fileDialog.Description = "请选择dst文件夹";
        //    //fileDialog.Filter = "所有文件(*xls*)|*.xls*"; //设置要选择的文件的类型
        //    if (fileDialog.ShowDialog() == DialogResult.OK)
        //    {
        //        dstTBox.Text = fileDialog.SelectedPath;
        //    }
        //}
        #endregion

        private void compareBtn_Click(object sender, EventArgs e)
        {
            PFWinFormHelper.GridClear(compareDGView);
            var srcFiles = Directory.GetFiles(srcTBox.Text);
            var dstFiles = Directory.GetFiles(dstTBox.Text);
            var srcList  = srcFiles.Select(a => new CompareModel {
                SrcFileName = Path.GetFileNameWithoutExtension(a)
            }).ToList();
            var dstList = dstFiles.Select(a => new CompareModel {
                DstFileName = Path.GetFileNameWithoutExtension(a)
            }).ToList();
            var leftData = (from first in srcList
                            join last in dstList on first.SrcFileName equals last.DstFileName into temp  //last有可能空
                            from last in temp.DefaultIfEmpty(new CompareModel {
                SrcFileName = first.SrcFileName, DstFileName = default(string)
            })                                                                                                                                   //或 from item in billTypeList.DefaultIfEmpty() //这行的last和第一行的first可在select时取到值
                            select new CompareModel
            {
                SrcFileName = first.SrcFileName,
                DstFileName = last.DstFileName,                   //StockQty = item != null ? item.StockQty : 0, //判断空
            });
            var rightRemainingData = (from r in dstList
                                      where !(from a in leftData select a.SrcFileName).Contains(r.DstFileName)
                                      select new CompareModel
            {
                SrcFileName = default(string),
                DstFileName = r.DstFileName
            });
            var fullOuterjoinData = leftData.Concat(rightRemainingData).ToList();

            //var fullOuterjoinData = PFDataHelper.ListFullJoin<CompareModel, CompareModel,string, CompareModel>(srcList,dstList,
            //    l=>l.SrcFileName,r=>r.DstFileName,lr=> lr.SrcFileName,
            //    (l)=> new CompareModel { SrcFileName = l.SrcFileName, DstFileName = default(string) },
            //    //(r) => new CompareModel { SrcFileName = l.SrcFileName, DstFileName = default(string) },
            //    (l,r) => new CompareModel { SrcFileName = l.SrcFileName, DstFileName = r.DstFileName },
            //    (r) => new CompareModel { SrcFileName = default(string), DstFileName = r.DstFileName }
            //    );


            foreach (var i in fullOuterjoinData)
            {
                var row = compareDGView.Rows.Add();
                compareDGView.Rows[row].Cells["SrcFileName"].Value = i.SrcFileName;
                compareDGView.Rows[row].Cells["DstFileName"].Value = i.DstFileName;
            }
        }