【问题标题】:Web API - Output valueWeb API - 输出值
【发布时间】:2017-10-24 07:13:18
【问题描述】:

我有一个 Web API 方法,它将以如下形式返回一个值

[ { "TransactionId": "AJ978962017", “总计”:1.17 }, { "TransactionId": "AJ978972017", “总”:8.9 } ]

我想要没有外部数组的输出,如下所示

{ "TransactionId": "AJ978962017", “总计”:1.17 }, { "TransactionId": "AJ978972017", “总”:8.9 }

请建议如何实现所需的输出。

代码

[Authorize]
// ..api/EmpDetails/Id
public IEnumerable<EmpDetail> Get(string Id)
{
    using (WebAPIEntities WE = new WebAPIEntities())
    {
        var emp = WE.TrxDetails.Where(E => E.EmpId == Id).ToList();
        return emp;
    }
}

【问题讨论】:

  • 显示返回对象数组的方法的代码。
  • [Authorize] //..api/EmpDetails/Id public IEnumerable Get(string Id) { using (WebAPIEntities WE = new WebAPIEntities()) { var emp = WE.TrxDetails.Where (E => E.EmpId == Id).ToList();返回雇员; } }
  • @Jayakumar 我建议您对其进行格式化并将其放入问题正文中。此外,您将返回 List&lt;EmpDetail&gt;()。如果你只想要一个,就只返回一个。
  • @Jayakumar 只要你编辑你的问题:)

标签: c# json asp.net-web-api


【解决方案1】:

Linq 扩展方法Where(...) 返回一个IEnumerable&lt;T&gt;。列表中的过滤器在哪里,因此将返回一个列表 (IEnumerable)。然后调用ToList() 将其转换为List&lt;T&gt;。当您序列化为 JSON 时,IEnumerable&lt;T&gt;List&lt;T&gt;T[] 都(正确)表示为 JSON 数组:[{...}、{...}、{...}]

[Authorize]
// ..api/EmpDetails/Id
public IEnumerable<EmpDetail> Get(string Id)
{
    using (WebAPIEntities WE = new WebAPIEntities())
    {
        var emp = WE.TrxDetails.Where(E => E.EmpId == Id).ToList();
        return emp;
    }
}

如果您只想要一个项目,您可以通过以下几种方式使用 Linq:

Single(...) - 这将返回一个值,只要该值在列表中是唯一的。如果没有找到它会抛出一个错误。

SingleOrDefault(...) - 这将返回一个值,如果未找到则返回 null。

First(...) - 这将返回第一个匹配的值,如果没有则抛出错误。

FirstOrDefault(...) - 这将返回第一个匹配值,如果没有,则返回 null。

Last(...) - 这将返回最后一个匹配的值,如果没有则抛出错误。

LastOrDefault(...) - 这将返回最后一个匹配值,如果没有,则返回 null。

上面返回的异常类型是:InvalidOperationException

我假设 FirstOrDefault(...) 足以满足您的场景:

[Authorize]
// ..api/EmpDetails/Id
public IEnumerable<EmpDetail> Get(string Id)
{
    using (WebAPIEntities WE = new WebAPIEntities())
    {
        return WE.TrxDetails.FirstOrDefault(E => E.EmpId == Id);
    }
}

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2013-02-14
    • 1970-01-01
    • 2022-09-13
    • 1970-01-01
    相关资源
    最近更新 更多