C# 多峰值API:如何将数据库值放入数组

C# 多峰值API:如何将数据库值放入数组,c#,arrays,while-loop,C#,Arrays,While Loop,我正在研究多峰值API——我对此不熟悉。功能如下: public meter[] GetMeterByAccountNumber(string accountNumber) { meter myMeter = new meter();//IS this declaration right? //some query work and next is sql data reader int i = 0; while (rdr.Read()) { myMeter[i].d

我正在研究多峰值API——我对此不熟悉。功能如下:

 public meter[] GetMeterByAccountNumber(string accountNumber) {
 meter myMeter = new meter();//IS this declaration right?
//some query work and next is sql data reader
 int i = 0;
 while (rdr.Read())
    {
      myMeter[i].deviceClass = rdr["deviceClass"].ToString();//error: Cannot apply indexing with [] to type 'meter'
      i++;
    }
  return myMeter[]; //generates ERROR: Value expected.
}

我不知道“
GetMeterByAccountNumber
”的返回类型是什么,但它确实希望返回
meter[]
数组。

GetMeterByAccountNumber
不是返回类型,而是函数名

您可以这样做,但是我将其称为GetMetersByAccountNumber,因为它返回一个数组/IEnumerable

另外,我不确定deviceClass与帐号有什么关系

using System.Linq;
using System.Collections.Generic

public IEnumerable GetMetersByAccountNumber(字符串accountNumber){
var items=新列表();
//一些查询工作,然后是sql数据读取器
while(rdr.Read())
{
var deviceClass=rdr[“deviceClass”].ToString();
var仪表=新仪表();
//我猜米有一些属性设置?
meter.deviceClass=deviceClass;
项目。增加(米);
}
return items.AsReadOnly();
}

根据@Richard Friend的回答,以下是对我有效的方法。谢谢你,理查德

public meter[] GetMetersByAccountNumber(string accountNumber)
{
     meter[] final_return;
      var items = new List<meter>();  
       while (rdr.Read())
        { 
            var meter = new meter();                
            meter.deviceClass = rdr["deviceClass"].ToString();
            items.Add(meter);
        }
        final_return = items.ToArray();
        return final_return;
}
public meter[]GetMetersByAccountNumber(字符串accountNumber)
{
仪表[]最终返回;
var items=新列表();
while(rdr.Read())
{ 
var仪表=新仪表();
meter.deviceClass=rdr[“deviceClass”].ToString();
项目。增加(米);
}
最终返回=items.ToArray();
返回最终返回;
}

谢谢。”“deviceClass”和一系列其他字段在当前代码中填充,但它们只填充一次,函数的返回很好——但函数应该返回一个数组对象——因此应该有多个“meter”值,而不仅仅是一个。不管怎样,我要试试你的代码。谢谢返回项。AsReadOnly();//当前上下文中不存在错误项。启动时出现ThxBigger问题:无法序列化接口System.Collections.Generic.IEnumerable`1[[meter,MultiSpeakWebService,Version=1.0.2119.28772,Culture=neutral,PublicKeyToken=null]]。如果我将函数声明为public meter[]GetMetersByAccountNumber(string accountNumber)然后启动错误消失了,实际上,items数组现在有多个值。正如上面所评论的,return语句仍然失败。不过越来越近了。谢谢函数期望返回meter[]类型,因此在给出的答案中失败。我需要的是以某种方式将项目列表转换为仪表类型?
public meter[] GetMetersByAccountNumber(string accountNumber)
{
     meter[] final_return;
      var items = new List<meter>();  
       while (rdr.Read())
        { 
            var meter = new meter();                
            meter.deviceClass = rdr["deviceClass"].ToString();
            items.Add(meter);
        }
        final_return = items.ToArray();
        return final_return;
}