【发布时间】:2013-04-21 17:32:36
【问题描述】:
我一直在根据 www.asp.net 上的指南探索 WEB API,但在尝试从表中过滤列时遇到了问题。
我的代码是这样的:
// GET api/Admin
public IEnumerable<Product> GetProducts(testvar = "")
{
IQueryable<Product> productString = db.Products;
if (testvar != "")
{
productString = productString.ToList().Select(i => new Product
{
Name = i.Name
}).AsQueryable();
}
return productString;
}
我要做的就是从我的 JSON 的 Product 表中检索 Name 列。然而,而不是得到类似的东西:
[{"Name":"Hammer"}] or [{"$id":"1","Name":"Hammer"}]
我明白了:
[{"$id":"1","Id":0,"Name":"Hammer","Price":0.0,"ActualCost":0.0}]
Price 和 ActualCost 值通常为 16.99 和 20.00,但不会删除它们,而是将它们返回为 0。Id 也是如此。
有没有一种简单的方法可以阻止它返回 Id、Price 和 ActualCost?也许我错过了一些非常简单的东西,但下面的两个链接是我找到的最接近的链接。
The entity cannot be constructed in a LINQ to Entities query
根据我一直在使用的指南 (http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-framework,-part-1),我正在使用带有 Orders、Projects 和 OrderDetails 表的 MVC 4 项目。
谢谢
【问题讨论】:
-
如果您只是想返回名称,为什么不返回
IEnumerable<string>? (我强烈怀疑你也应该摆脱ToList和AsQueryable的调用。) -
刚刚玩过代码。根据我发布的一个 SO 链接,我只有 ToList 和 AsQueryable,因为它阻止了另一个错误的发生。但是,我确实有一个返回字符串的游戏,我似乎正在到达某个地方。这意味着我将不得不为每个不同的请求过滤构建自己的字符串。我只是想象会有一个更简单的方法。谢谢
标签: c# asp.net-mvc entity-framework asp.net-web-api iqueryable