【发布时间】:2013-05-15 17:14:29
【问题描述】:
在我的 C# WCF 服务中,我有一个 SqlDataReader,其中包含我想返回给客户端的数据行。
如何返回SqlDataReader中的所有内容?
我现在有
if (sqlReader != null)
{
if (sqlReader.HasRows)
{
while (sqlReader.Read())
{
return sqlReader[0].ToString();
}
sqlConn.Close();
}
else
{
return null;
}
}
只返回第一个结果。类的返回类型目前是字符串。 我正在考虑类似数组中的数组,但我不确定如何?
编辑:
感谢您的许多回复。我有兴趣返回服务“创建”的整个 SQL 数据。第一列 ([0]) 未在线 - 这仅用于测试。
但我不确定如何将服务中的所有内容返回给客户端。
- 如何退货?
例如。在 Powershell 中,如果我必须在客户端之间传递它,我会创建一个集合并将对象添加到该集合中。
我在 C# 和 WCF 中寻找类似的东西。
到目前为止非常感谢:)
编辑#2:
知道了! :)
创建了一个新类(例如):
public class ObjectNotification
{
public string AlertDescription;
public string Servername;
}
在我顶部的 svc.cs 文件中:
List<ObjectNotification> objlist = new List<ObjectNotification>();
和
if (sqlReader.HasRows)
{
while (sqlReader.Read())
{
ObjectNotification obj = new ObjectNotification();
obj.AlertDescription = sqlReader["AlertDescription"].ToString();
obj.Servername = sqlReader["ComputerName"].ToString();
objlist.Add(obj);
}
}
return objlist;
这正是我想要的:)
最好的问候
【问题讨论】:
-
类没有返回类型。你说的是方法吗?你能把你使用
SqlDataReader的整个方法贴出来吗? -
我认为这将是很多额外的工作,并且需要对您的代码设计进行大量更改(因此我不会将此作为答案发布)但真正的答案是您必须使用WCF Data Services,但是您使用它的方式与普通 WCF 非常不同。
-
代码还有一个缺陷,第一次点击return语句时控件永远存在循环,实际上只返回第一行....
-
@user1281991 从我的角度来看一些提示:如果您只需要 2 个属性来捆绑,则可以使用结构而不是类。如果你想添加方法,一个类是有意义的。 “ObjectNotification”这个名字对于 imo 类来说听起来不太好。如果其他人想阅读您的代码,则类名应该一目了然。您创建了解决方案真是太好了。 :-)
-
我还是更喜欢:DataTable dt=new DataTable(); dt.Load(数据读取器); List
objList=(List ) dt.ToList ();一旦你得到了 dt.tolist ,你就有了一个可以一次又一次地重用的代码......如果你有一个具有 50 个属性的对象,那就太好了;)
标签: c# visual-studio-2010 wcf