C# 多峰值API:如何将数据库值放入数组
我正在研究多峰值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
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;
}