Odata Linq展开,如何选择我需要的列

时间:2013-10-14 07:23:16

标签: c# linq odata

var query = (from a in Orders.Expand("Order_Details")
select a).Take(9)

此语句生成所有列,只需要一些列

2 个答案:

答案 0 :(得分:1)

将结果选择为新的匿名对象:

var query = (from a in Orders.Expand("Order_Details")
select new { a.Column1, a.Column2, etc... } ).Take(9)

或者如果您需要强力输入:

public class OrderDetails {
    public int OrderID { get; set; }
    public int CustomerID { get; set; }
}

var query = (from a in Orders.Expand("Order_Details")
select new OrderDetails { OrderID = a.order_id, CustomerID = a.customer_id } ).Take(9)

答案 1 :(得分:0)

我假设您在WCF数据服务中使用实体数据模型(edmx文件)。 (因为您正在使用“扩展”功能。)

如果是这种情况...... 您可以创建复杂的数据类型(通过edmx模型浏览器),然后将所有需要的列类型添加到此复杂数据类型中。

然后,在数据服务中创建一个自定义函数,用于传回此复杂类型的数据。

您的客户端应用程序可以使用服务中定义的复杂类型,因为服务引用允许您识别复杂类型。