2

使用 LINQ 时我应该从 WCF 服务返回什么?例如:

var res = from q in context.cust
          select q;

LINQ 遵循延迟执行,因此该语句在运行 for 循环之前不会执行任何操作。这意味着我不能只返回 res。那我应该返回什么?每次我想从 WCF 服务返回数据时,我是否需要编写一个 for 循环并填充对象并返回它的列表?是否没有与 ADO.NET DataSet 等效的遵循断开式体系结构并且非常适合在不同层之间以及从 Web 服务或 WCF 服务移动数据?

4

3 回答 3

2

执行被推迟到实际请求数据之前,你是对的,这可能是一个 for 循环,但它也需要序列化以通过 WCF 传输。如果您让 WCF 服务返回 IEnumerable,则将执行查询并返回结果。

于 2010-08-23T08:26:24.740 回答
1

如果您将其作为IEnumerable<cust>WCF 序列化程序返回,则应执行查询。

但我通常会

var res = (from q in context.cust select q).ToList();
于 2010-08-23T08:26:39.077 回答
1

由于查询中提到的上下文,您必须通过将结果转换为数组或列表来显式执行查询。上下文可能与 Linq-To-Sql 或 EF 有关,并且在序列化期间延迟执行很可能会失败,因为上下文已经关闭。

于 2010-08-23T08:48:39.243 回答