如何在这种情况下检查null? [英] How to check for null in this situation?

查看:90
本文介绍了如何在这种情况下检查null?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



如何在此方法中检查ManagementObject mo2是否为空:



Hi all,

How to check if ManagementObject mo2 is null in this method:

static string[] GetUsbcomDevices()
      {
          ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity");
          List<string> list = searcher2.Get().Cast<ManagementObject>().Select(mo2 => mo2["Name"].ToString()).Where(name => name.Contains("(COM")).ToList();
          string[] usbDevices = list.Distinct().OrderBy(s => s).ToArray();
          return usbDevices;
      }





谢谢,

Groover



Thanks,
Groover

推荐答案

如果搜索者包含空值,那么你可以很容易地忽略它们:

If the searcher is containing nulls, then you can ignore them quite easily:
List<string> list = searcher2.Get().Where(m => m != null).Cast<ManagementObject>().Select(mo2 => mo2["Name"].ToString()).Where(name => name.Contains("(COM")).ToList();



但是你不需要将集合强制转换为ManagementObjects,因为Get方法已经返回了它们的集合: MSDN [ ^ ]


这是解决方案:

this is the solution:
static string[] GetUsbcomDevices()
       {
           List<ManagementObject> listObj = new List<ManagementObject>();
           List<string> usbSerial = new List<string>();
           try
           {
               string query = "SELECT * FROM Win32_PnPEntity WHERE ConfigManagerErrorCode = 0";
               ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
               listObj = searcher.Get().Cast<ManagementObject>().ToList();
               searcher.Dispose();
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.ToString());
               usbSerial = new List<string>();
           }
           foreach (ManagementObject obj in listObj)
           {
               var targetObj = obj["Caption"];
               if (targetObj != null)
               {
                   string caption = targetObj.ToString();
                   if (caption.Contains("(COM"))
                   {
                       string name = caption.Substring(caption.LastIndexOf("(COM")).
                                                       Replace("(", string.Empty).
                                                       Replace(")", string.Empty);
                       usbSerial.Add(name);
                   }
               }
           }
           string[] usbDevices = usbSerial.Distinct().OrderBy(s => s).ToArray();
           return usbDevices;
       }





Groover



Groover


这篇关于如何在这种情况下检查null?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆