C#Json匿名类型,包括值列表

C#Json匿名类型,包括值列表,c#,json,ajax,asp.net-mvc,anonymous-types,C#,Json,Ajax,Asp.net Mvc,Anonymous Types,我有一个ASP.NETMVC5应用程序和一个返回JsonResult的控制器中的方法。在方法内部,名为myData的变量检索IList 客户对象如下所示: public class customer { public int custId {get; set;} public string custName {get; set;} public virtual ICollection<address> addresses{ get; set; } } pub

我有一个ASP.NETMVC5应用程序和一个返回JsonResult的控制器中的方法。在方法内部,名为
myData
的变量检索
IList

客户对象如下所示:

public class customer
{
    public int custId {get; set;}
    public string custName {get; set;}
    public virtual ICollection<address> addresses{ get; set; }
}
public class address
{
    public int addressId {get; set;}
    public int custId {get; set;}
    public string addressName {get; set;}
    public virtual customer cust { get; set; }
}
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);
}
但是,我的问题是,在匿名类型中,我还需要引用
地址
集合。
address
类如下所示:

public class customer
{
    public int custId {get; set;}
    public string custName {get; set;}
    public virtual ICollection<address> addresses{ get; set; }
}
public class address
{
    public int addressId {get; set;}
    public int custId {get; set;}
    public string addressName {get; set;}
    public virtual customer cust { get; set; }
}
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);
}
在匿名类型中,我需要做的是获取客户
地址名
,其中可能有三个

比如说:

public class customer
{
    public int custId {get; set;}
    public string custName {get; set;}
    public virtual ICollection<address> addresses{ get; set; }
}
public class address
{
    public int addressId {get; set;}
    public int custId {get; set;}
    public string addressName {get; set;}
    public virtual customer cust { get; set; }
}
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 => address.addressName).ToList()

这将为您提供一个地址名列表。您可以将其保留为一个列表,使用
string.Join
,从中创建一个字符串,或根据需要缩减为一个子列表。

x.addresses有什么问题。选择(address=>address.addressName)?var allAddresses=IEnumerable()//您的地址在此起作用;进入myData new{custAddresses=allAddresses}.ToList();return Json(myData)@Jordi此代码未编译。这只是一个想法,基本上他必须将新的匿名Json custAddresses=allAddresses与他拥有的地址集合放在一起。谢谢Andrei,不知道我为什么没有这么做!