【问题标题】:C# Json Anonymous Type to include list of valuesC# Json 匿名类型以包含值列表
【发布时间】:2018-03-27 13:53:43
【问题描述】:

我有一个 ASP.Net MVC 5 应用程序和一个控制器中的方法,它返回一个 JsonResult。在该方法内部,名为myData 的变量检索IList<customer>

客户对象是这样的:

public class customer
{
    public int custId {get; set;}
    public string custName {get; set;}
    public virtual ICollection<address> addresses{ get; set; }
}

然后我创建一个匿名类型并将其作为 Json 返回。见下文。

public JsonResult GetData()
{
    var myData = _myService.GetAll().Select(x => new
    {
        custId = x.custId,
        custName = x.custName
    }).ToList();

    return Json(myData, JsonRequestBehavior.AllowGet);
}

这可行,但是,我的问题是在我的匿名类型中,我还需要引用 addresses 集合。 address 类如下所示:

public class address
{
    public int addressId {get; set;}
    public int custId {get; set;}
    public string addressName {get; set;}
    public virtual customer cust { get; set; }
}

在我的匿名类型中我需要做的是让客户addressName,其中可能有多达三个。

所以,是这样的:

public JsonResult GetData()
{
    var myData = _myService.GetAll().Select(x => new
    {
        custId = x.custId,
        custName = x.custName,
        custAddresses = x.addresses.All().addressName
    }).ToList();

    return Json(myData, JsonRequestBehavior.AllowGet);
}

显然,像这样尝试获取所有客户地址名称是行不通的,这就是我卡住的地方。

有人可以帮忙吗?

谢谢。

【问题讨论】:

  • x.addresses.Select(address =&gt; address.addressName) 有什么问题?
  • var allAddresses = IEnumerable
    () // 你的地址函数在这里;进入 myData new { custAddresses = allAddresses }.ToList();返回 Json(myData)
  • @Jordi 此代码无法编译。
  • 这只是一个想法,基本上他必须将他拥有的地址集合放入新的匿名Json custAddresses = allAddresses。
  • 谢谢安德烈,不知道我为什么不这样做!

标签: c# json ajax asp.net-mvc anonymous-types


【解决方案1】:
x.addresses.Select(address => address.addressName).ToList()

这将为您提供地址名称列表。您可以将其保留为列表,使用 String.Join 从中创建单个字符串,或缩减为子列表,具体取决于您的需要。

【讨论】:

    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2013-03-25
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多