C#使用LINQ Query将记录与进程数组的结果进行比较

我编写了以下代码来比较一列的DataSet记录(即)记录.我得到以下例外:ex:” Index was outside the bounds of the array.”public void GetRunningTask(){// Process[] lstprocess = Process.GetProcesses();conn=new...

我编写了以下代码来比较一列的DataSet记录(即)记录.我得到以下例外:

ex:” Index was outside the bounds of the array.”

  public void GetRunningTask()
  {
      // Process[] lstprocess = Process.GetProcesses();
      conn=new SqlConnection("Data Source=.; Initial Catalog='TTES'; Integrated Security=SSPI;");
      da=new SqlDataAdapter("Select AppName from LRNSetting", conn);
      ds=new DataSet();
      da.Fill(ds,"LRNSetting");

      // Process[] lstprocess = Process.GetProcesses();
      for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
      {
        Process[] lstprocess = Process.GetProcesses();
        // DataRow dr=ds.Tables[0].Rows.Cast<DataRow>().Single(row=>row["AppName"])

        var pro = from p in lstprocess
                 //where p.ProcessName.Contains("LRCDual")
                 //where p.ProcessName.Contains(ds.Tables[0].Rows[k].ItemArray)  //added temporary
                 where (p.ProcessName.Contains(ds.Tables[0].Rows[0].ItemArray[k].ToString()))
                 select p;
       }
  }

解决方法:

虽然您在ds.Tables [0] .Rows.Count上进行了迭代,但是您正在使用ItemArray的计数器而不是按预期方式使用Rows

ds.Tables[0].Rows[0].ItemArray[k].ToString()

我建议你检查一下你的逻辑

本文标题为:C#使用LINQ Query将记录与进程数组的结果进行比较

基础教程推荐