Избавиться от цикла foreach - C#

Узнай цену своей работы

Формулировка задачи:

Получаю серийный номер флешки:
Листинг программы
  1. ManagementObjectSearcher theSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
  2. foreach (ManagementObject currentObject in theSearcher.Get())
  3. {
  4. if (currentObject["Name"].ToString() == nameList[comboBox1.SelectedIndex])
  5. {
  6. ManagementObject theSerialNumberObjectQuery = new ManagementObject("Win32_PhysicalMedia.Tag='" + currentObject["DeviceID"] + "'");
  7. listBox1.Items.Add(theSerialNumberObjectQuery["SerialNumber"].ToString());
  8. }
  9. else { }
  10. }
Можно как то тут избавиться от цикла? Идея такова, что вывожу в comboBox все подключенные флешки и после того как выберу определенную, нужно показать ее серийный номер

Решение задачи: «Избавиться от цикла foreach»

textual
Листинг программы
  1. List<string> usbList;
  2.         List<string> nameList;
  3.         public void UsbDiskList()
  4.         {
  5.             string diskName = string.Empty;
  6.             string diskPhys = string.Empty;
  7.             usbList = new List<string>();
  8.             nameList = new List<string>();
  9.             usb_select.Items.Clear();
  10.  
  11.             //Получение списка накопителей подключенных через интерфейс USB
  12.             foreach (System.Management.ManagementObject drive in
  13.                       new System.Management.ManagementObjectSearcher(
  14.                        "select * from Win32_DiskDrive where InterfaceType='USB'").Get())
  15.             {
  16.                 //Получаем букву накопителя
  17.                 foreach (System.Management.ManagementObject partition in
  18.                    new System.Management.ManagementObjectSearcher(
  19.                     "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"]
  20.                       + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition").Get())
  21.                 {
  22.                     foreach (System.Management.ManagementObject disk in
  23.                        new System.Management.ManagementObjectSearcher(
  24.                         "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='"
  25.                           + partition["DeviceID"]
  26.                           + "'} WHERE AssocClass = Win32_LogicalDiskToPartition").Get())
  27.                        
  28.                     {
  29.                         //Получение буквы устройства
  30.                         diskName = disk["Name"].ToString().Trim();
  31.                         diskPhys = drive["Name"].ToString().Trim();
  32.                         usb_select.Items.Add(diskName + " (" + drive["Model"]  + ")");
  33.                         usbList.Add(diskName);
  34.                         nameList.Add(diskPhys);
  35.                         usb_select.SelectedIndex = 0;
  36.                     }
  37.                 }
  38.             }
  39.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы