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

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

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

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

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

textual
Листинг программы
List<string> usbList;
        List<string> nameList;
        public void UsbDiskList()
        {
            string diskName = string.Empty;
            string diskPhys = string.Empty;
            usbList = new List<string>();
            nameList = new List<string>();
            usb_select.Items.Clear();
 
            //Получение списка накопителей подключенных через интерфейс USB
            foreach (System.Management.ManagementObject drive in
                      new System.Management.ManagementObjectSearcher(
                       "select * from Win32_DiskDrive where InterfaceType='USB'").Get())
            {
                //Получаем букву накопителя
                foreach (System.Management.ManagementObject partition in
                   new System.Management.ManagementObjectSearcher(
                    "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"]
                      + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition").Get())
                {
                    foreach (System.Management.ManagementObject disk in
                       new System.Management.ManagementObjectSearcher(
                        "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='"
                          + partition["DeviceID"]
                          + "'} WHERE AssocClass = Win32_LogicalDiskToPartition").Get())
                        
                    {
                        //Получение буквы устройства
                        diskName = disk["Name"].ToString().Trim();
                        diskPhys = drive["Name"].ToString().Trim();
                        usb_select.Items.Add(diskName + " (" + drive["Model"]  + ")");
                        usbList.Add(diskName);
                        nameList.Add(diskPhys);
                        usb_select.SelectedIndex = 0;
                    }
                }
            }
        }

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


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

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

11   голосов , оценка 3.727 из 5
Похожие ответы