簡體   English   中英

Web API不返回所有對象

[英]web api not returning all objects

我的Web api控制器中有一個如下所示的方法:

// GET api/categories/top
[HttpGet]
[Route("api/categories/top")]
public IHttpActionResult Top()
{
    var models = service.GetRoot("Categories", "Assets").Categories;
    var t = models.Where(model => !model.Deleted);

    return Ok(t);
}

如果我運行該命令,我將第一個項目罰款,但其他項目顯示為

{"$ref":"3"},{"$ref":"13"},{"$ref":"14"},{"$ref":"15"}

如果我將代碼更改為:

// GET api/categories/top
[HttpGet]
[Route("api/categories/top")]
public IHttpActionResult Top()
{
    var models = service.GetRoot("Categories", "Assets").Categories;

    return Ok(models);
}

它工作正常(但這會顯示所有類別,包括我不想要的已刪除類別)。

有人知道為什么會這樣嗎?

那個怎么樣?

var models = service.GetRoot("Categories", "Assets").Categories;
var t = models.Where(model => !model.Deleted).ToList();
return Ok(t);

我希望返回未執行的IEnumerable對象時出現問題。

這是一個非常簡單的例子

public class Employee
{
    public string Name { get; set; }
    public bool Deleted { get; set; }
}

樣本數據

var employees = new List<Employee>();
employees.Add(new Employee{ Name = "Yasser", Deleted = false });
employees.Add(new Employee{ Name = "Hanselman", Deleted = true });
employees.Add(new Employee{ Name = "Neel", Deleted = true });
employees.Add(new Employee{ Name = "Ian", Deleted = false });

返回“未刪除”列表

return employees.Where(model => !model.Deleted).ToList();

在您的代碼中需要更改:

// GET api/categories/top
[HttpGet]
[Route("api/categories/top")]
public IHttpActionResult Top()
{
    var models = service.GetRoot("Categories", "Assets").Categories;
    var t = models.Where(model => !model.Deleted).ToList();
    return Ok(t);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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