using System.Collections.Generic;
using System.Diagnostics;
public static void Main(string[] args)
var TmpData1= Enumerable.Range(0, 3).Select(o=>new
Group = ((char)(new Random(Guid.NewGuid().GetHashCode()).Next(0, 26) + 65)).ToString(),
Data = Enumerable.Range(0, new Random(Guid.NewGuid().GetHashCode()).Next(0, 20)).Select(x => new DataItem()
Col1 = (new Random(Guid.NewGuid().GetHashCode()).Next(0, 100)),
Col2 = (new Random(Guid.NewGuid().GetHashCode()).Next(0, 50)),
Col3 = (new Random(Guid.NewGuid().GetHashCode()).Next(0, 10)),
var SubtotalData = (from r in TmpData1
SubtotalData = new List<string>()
r.Data.Sum(p=>p.Col1+p.Col2+p.Col3).ToString(),
r.Data.Sum(p => p.Col1 + p.Col2).ToString(),
r.Data.Sum(p => p.Col1 + p.Col3).ToString(),
var FinalData = (from r in TmpData1
join r2 in SubtotalData on r.Group equals r2.Group into G
SummaryData = G.Select(p=>p.SubtotalData).ToList()
foreach(var y in FinalData)
var Template = string.Format("{0}\r\n{1}",
string.Join("\r\n",y.SummaryData.Select(p => string.Format("描述:{0},{1},{2}", p.ToArray()))),
string.Join("\r\n", y.Data.Select(p=> string.Format("一般資料:{0},{1},{2},{3}", p.SN,p.Col1,p.Col2,p.Col3))));
Console.WriteLine(Template);
public string Group { get; set; }
public List<DataItem> Data { get; set; }
public int SN { get; set; }
public int Col1 { get; set; }
public int Col2 { get; set; }
public int Col3 { get; set; }