有如下people pets 两个List
Person magnus = new Person { Name = "Hedlund, Magnus" id=1};
Person terry = new Person { Name = "Adams, Terry" ,id=2};
Person charlotte = new Person { Name = "Weiss, Charlotte",id=3 };
Pet barley = new Pet { Name = "Barley", ownerid = 1};
Pet boots = new Pet { Name = "Boots", ownerid = 1 };
Pet whiskers = new Pet { Name = "Whiskers", ownerid = 3 };
Pet daisy = new Pet { Name = "Daisy", ownerid = 3};
List<Person> people = new List<Person> { magnus, terry, charlotte };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, daisy };
怎么获得如下结果
[{Name : "Hedlund, Magnus" id:1,Pets:[{Name : "Barley"},{Name : "Boots"}]}
,{Name:"Adams, Terry",id:2 ,Pets:[]}
,{Name :"Weiss, Charlotte",id:"3",Pets:[{Name :"Whiskers"},{Name :"Daisy"}]}]
我想利用Enumerable 的join 或是groupby的都不大熟悉。写了半天也没的出来,求一个了解c#的帮解一下
问题追加:
我已经创建了一个class
public class family{
[DataMember]
public string name;
[DataMember]
public int id ;
[DataMember]
public List<Pet> pets;
}
用foreach 去分别遍历 pets 和people 这个方法也可以实现。我感觉可能不是那么优。
所以我想了解 Enumerable有没有哪个方法或是几个方法组合可以做到如此。
实际情况是我从sqlserver中的存储过程返回了类似于people和pets的两个表。我现在需要拼成上文的family 的list结果作为webservice的jsonp数组返回(上面的结果是我前端页面接收的json数据)。
使用
foreach
和System.Linq
可以很方便的处理,使用 Newtonsoft Json.NET 可以很好的输出 JSON。输出(为了好看我格式化了的,实际输出是一行)
也可以在程序里格式化,给 Json.NET 加配置就可以了,这个可以查文档,就不细说了。