【问题标题】:A method in controller to return two json objects控制器中返回两个 json 对象的方法
【发布时间】:2016-12-08 02:53:10
【问题描述】:
Public JsonResult GetDetails()
{ 
  List<Cust> Customers = new List<Cust>();
  Customers = GetCustomerDetails();
  var name = Customers.Select(e => new{e.custname}).Distinct().ToList();
  var dept =  Customers.Select(e => new{e.deptname}).Distinct().ToList();
  var response = new{CustomerNames = name, CustomerDepartments = dept};
  return Json(response, JsonRequestBehaviour.AllowGet();
}

我有上面这个方法返回一个 json 对象,现在这个方法必须返回这个响应的一个子集以及它返回的那个,是否可以对部门类型进行过滤并从同一方法返回两个 jon 对象。

【问题讨论】:

    标签: angularjs json asp.net-mvc


    【解决方案1】:

    当然。您可以向匿名对象添加一个属性并将其返回。

    public JsonResult GetDetails()
    { 
      var customers = GetCustomerDetails();
      var names = customers.Select(e => new {e.custname}).Distinct().ToList();
      var depts =  customers.Select(e => new { e.deptname}).Distinct().ToList();
      var deptSubSet = depts.Where(f=>f.deptname=="IT").ToList(); 
      //replace this with your condition
    
      var response = new {  CustomerNames = names, 
                            CustomerDepartments = depts,
                            FilteredDepartments = deptSubSet 
                         };
       return Json(response, JsonRequestBehaviour.AllowGet();
    }
    

    Where 条件 linq 代码替换为您需要用于获取子集的任何 where 子句。

    顺便说一句,结果不会是一个数组,它将是一个具有 3 个属性的对象。这些属性的值将是一个数组。

    【讨论】:

    • 非常感谢您的回复...是否可以选择所有部门名称为 IT 且名称以“N”开头的客户,我们可以合并两个结果吗?
    • 是的。你可以使用StartsWith扩展方法
    • 但是如何合并名称和部门并将其存储在上述响应对象的属性中。
    • filteredDepartments 是具有deptName 属性的对象的集合 您应该对同时具有属性(客户名称和部门)的数据集执行 where 子句(使用 StartsWith)。可能您需要使用联接。在不知道你的表结构的情况下,我只能建议这么多。
    • 谢谢Shyju,我能够得到想要的结果。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多