我有好幾份Excel檔案,因為要的欄位都不同,所以我都先各別用LIST把需要的存下來
然後有一份要先把名稱一樣的篩選過,後面的值做相加,我是用Groupby處理完,可是我想把其他份的LIST做合併,卻不能。
    public class user
    {
        public string item { get; set; }
        public decimal totalRec { get; set; }
        public decimal MTDA { get; set; }
        public decimal MTDOrder { get; set; }
        public decimal current { get; set; }
        public decimal next { get; set; }
        public decimal after { get; set; }
    }
 using (ExcelPackage ep3 = new ExcelPackage(new   System.IO.FileInfo(@"C:\Users\10912048\Desktop\WKSTRST\WCQ FCST control table202105.xlsx")))
                {
                    ExcelWorksheet sh3 = ep3.Workbook.Worksheets["Summary"];
                    var WCDme1 = new List<user>();
                    do
                    {
                        int WCDcells = 2;
                        try
                        {
                            for (int r = 3; r <= sh3.Dimension.Rows; r++)
                            {
                                WCDme1.Add(new user
                                {
                                    item = sh1.Cells[r, 1].Value?.ToString(),
                                    totalRec = decimal.Parse(sh1.Cells[r, 33].Value?.ToString() ?? "0"),
                                    MTDA = decimal.Parse(sh1.Cells[r, 57].Value?.ToString() ?? "0"),
                                    MTDOrder = decimal.Parse(sh1.Cells[r, 56].Value?.ToString() ?? "0"),
                                    current = decimal.Parse(sh1.Cells[r, 59].Value?.ToString() ?? "0"),
                                    next = decimal.Parse(sh1.Cells[r, 61].Value?.ToString() ?? "0"),
                                    after = decimal.Parse(sh1.Cells[r, 63].Value?.ToString() ?? "0"),
                                });
                                WCDcells++;
                                error = false;
                            }
                        }
                        catch
                        {
                            sh3.DeleteRow(WCDcells);
                            Console.WriteLine("WCQ Row" + WCDcells + " error");
                            error = true;
                            WCDme1.Clear();
                        }
                    } while (error == true);
                    var WCDme = from a in WCDme1
                                group a by new { a.item} into av
                                select new
                                {
                                    av.Key.item,
                                    MTDA = av.Sum(x => x.totalRec) + av.Sum(x => x.MTDA),
                                    MTDOrder = av.Sum(x => x.MTDOrder),
                                    current = av.Sum(x => x.current),
                                    next = av.Sum(x => x.next),
                                    after = av.Sum(x => x.after),
                                };
                    //將list合併
                    var ALLlist = WCDme.Union(WCQme).ToList();
                }
                
          問題出在這一行
 var ALLlist = WCDme.Union(WCQme).ToList();
說明需要ParallelQuery的接收器。

我有三個List,只有一個有先用Groupby做過處裡(只有一份需要),然後我想將3個變成一個LIST就好了,不需要篩選,算是只有合併而已。
List<string> alist = new List<string>();
List<string> blist = new List<string>();
//a跟b兩兄弟各自爬山.......抓資料
// ..to do get lists.....................................
//
alist.AddRange(blist);  //合併完了
再複雜的list都能合併,只要兩個list都是同一個class <T>