public static void ProcessE0402 <TEntity>(this ModelSource <TEntity> models, int year, int periodNo, int?branchID) where TEntity : class, new() { IQueryable <BranchStore> items = models.GetTable <BranchStore>(); if (branchID.HasValue) { items = items.Where(b => b.BranchID == branchID); } foreach (var item in items) { var vacantNoList = models.GetDataContext().InquireVacantNo(item.BranchID, year, periodNo) .GroupBy(v => v.TrackID); foreach (var v in vacantNoList) { Models.MIG3_1.E0402.BranchTrackBlank result = models.CreateE0402(v.ToArray()); String fileName = Path.Combine(TaskExtensionMethods.E0402Outbound, result.Main.YearMonth + "-" + result.Main.BranchBan + ".xml"); result.ConvertToXml().Save(fileName); } } }