我是 WCF 的新手。我对从 WCF 方法返回数据有疑问。
我们可以从 WCF 方法返回 SqlDataReader 或 DataTable 对象吗?
谢谢
是的,你可以 100% 使用 .net 支持的任何返回类型返回。但唯一的问题是 WCF 非常灵活,所以 WCF 的客户端并不是 100% 的 .net 框架。它也可以被java使用。并且 java returntype 不是 100% 等同于 .net returntype 所以你需要注意它。例如,默认情况下,通用列表在客户端转换为可观察集合。
您应该创建一个新对象,然后返回这些对象的集合。像这样的东西。
public class Thing
{
public int ID { get; set; }
public string Name { get; set; }
}
然后使用您的数据表/阅读器,您可以使用 LINQ 或迭代来创建一个集合:
粗略的 sudo 代码:
Initialise List for Thing
foreach var v in DataTable
{
List<Thing>.Add(new Thing(){ ID = v.ID, Name = v.Name });
}
return List
或者,您可以使用 linq:
List<Thing> theList = DataTable.Select(x => new Thing { ID = x.ID, Name = x.Name });
return theList;
我敢肯定,您可以弄清楚其余部分,如果您需要更多说明,我将扩展我的答案。希望这可以帮助。
是的,您可以,但是 DataTable 有很多开销,您可能会考虑将其写入实体列表并传递此列表
这样给我带来的麻烦少了很多