[英]Using IQueryable select to filter columns
我一直在基於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的“產品”表中檢索“名稱”列。 但是,與其得到類似的信息:
[{"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,價格和ActualCost? 也許我缺少了一些非常簡單的東西,但是下面的兩個鏈接是我最近找到可能有用的東西的地方。
按照我一直在使用的指南( 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項目中工作。
謝謝
您仍將返回完整的Product
實體類型,因此,即使投影到新Product
的集合,未初始化的屬性仍將具有其默認值( int
為0)。
您應該創建一個僅包含您希望公開的屬性(例如ProductInfo
)的新類型,並返回此類型的集合。
或者,如果您的服務支持$ select查詢選項,則客戶端可以執行投影。
我想到了。 我只是將Product分配給一個新變量,並對其進行了選擇調用,它運行良好。
所以現在代替:
productString = productString.ToList().Select(i => new Product
{
Name = i.Name
}).AsQueryable();
我有
var productInfos =
from i in productString
select new { i.Name };
newVariable.Add(productInfos);
然后,我返回newVariable,它是對象列表,而不是產品的IEnumerable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.