簡體   English   中英

使用IQueryable select過濾列

[英]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? 也許我缺少了一些非常簡單的東西,但是下面的兩個鏈接是我最近找到可能有用的東西的地方。

IQueryable C#選擇

無法在LINQ to Entities查詢中構造實體

按照我一直在使用的指南( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM