3
Reply

C# modify a foreach loop

dc

dc

Mar 10 2013 5:47 PM
1.6k
I have a question about how to modify the C# 2008 desktop  foreach (String RFile in RFiles) block of code and/or the code that is surrounding this block of code. The code I am referring
  to is listed below.  Originally the code was setup to select files in a specific file directory. Now the requirements have changed where I need to loop through
  4 subfoler directories that are at the same folder level. The 4 folder levels will be: 1. C:\customer\Mon_year\Cancel, 2. C:\customer\Mon_year\ED, 3. C:\customer\Mon_year\UI, and  4. C:\customer\Mon_year\UI.

  Right now these are the only folders that will be setup at this level in the directory structure. However I can see how there can potentially be other directories created at this
  level in the future.

  I would like to be able to resue the foreach (String RFile in RFiles) block without repeating the 4 times.

  Thus can you show me how to modify this code and/or tell me how I can change this code? 

  public String addNewPKG()
  {
  {
  try
  {
  String packageId = "";
  int intReviewFileCount = 0;
  string Format_year = DateTime.Now.AddMonths(-1).ToString("yyyy");
  string strMonth = DateTime.Now.AddMonths(-1).ToString("MMMM").ToUpper();
  string Format_Date = "_" + strMonth.Substring(0, 3) + "_" + Format_year;
  String filesaveLocation = null;
  filesaveLocation = Path.Combine(ConfigurationSettings.AppSettings["tLocation"], Format_Date);
  string strCancel = "Cancel";
  string strED = "ED";
  string strUI = "UI";
  string strRCS = "RCS";
  //string strsubfilesaveLocation = Path.Combine(filesaveLocation,strCancel);
  //string strsubfilesaveLocation = Path.Combine(filesaveLocation, strED);
  //string strsubfilesaveLocation = Path.Combine(filesaveLocation, strUI);
  string strsubfilesaveLocation = Path.Combine(filesaveLocation, strRCS);
  if (!Directory.Exists(strsubfilesaveLocation))
  {
  System.IO.Directory.CreateDirectory(strsubfilesaveLocation);
  logging.Error("The location " + strsubfilesaveLocation + " does not exist for documents. ");
  return packageId;
  }

  else
  {
  string[] RVWFiles = (from path in Directory.GetFiles(strsubfilesaveLocation)
  let name = Path.GetFileName(path)
  where name.EndsWith(".pdf") ||
  name.EndsWith(".xlsx") ||
  name.EndsWith(".xls")
  select path).ToArray();
  if (RVWFiles.Length == 0)
  {
  logging.Info("packageId: " + packageId + " the location " + strsubfilesaveLocation + " does not contain any documents. ");
  return packageId;
  }
  foreach (String RFile in RFiles)
 
  {
  string orgnizationName = "";
  string contactName = "";
  string fileNameWithExtension = Path.GetFileName(RFile);
  string fileName = Path.GetFileNameWithoutExtension(RFile);
  string Original_location = filesaveLocation;

  string[] names = fileName.Split('_');
  orgnizationName = names[0].TrimEnd();
  contactName = names[1].TrimStart();
 

  string strOrgnizationName = orgnizationName;
 
  string[] items = contactName.TrimEnd().Split(' ');
  string surname = items[items.Length - 1];
  --here does the processing that is required--
 
  return null;
  } //closing bracket for  foreach (String RFile in RFiles)
  }

  catch (Exception e)
  {
  logging.Error("Error Processing --> " + e.Message);
  logging.Error("************* Stack Trace *******************");
  logging.Error(e.StackTrace);
  throw new Exception(e.Message);
  }
  }
 
  }

Answers (3)