请教一个LINQ选择的问题
现有Album和Photo两个对象,一对多,定义如下:
- C# code
public class Album { public List<Photo> Photos { get; set; }}public class Photo { public string Name { get; set; }}
然后创建并关联,
- C# code
List<Album> albums = new List<Album>();albums.Add(new Album { Photos = new List<Photo> { new Photo{Name ="Photo1"}, new Photo{Name ="Photo2"}}});albums.Add(new Album { Photos = new List<Photo> { new Photo{Name ="Photo3"}, new Photo{Name ="Photo4"}, new Photo{Name ="Photo5"}}});
如何可以通过LInq来select出来albums中所有Photo,即
var q = ..linq..
q出来就是List<Photo>,然后包括Photo1-5
这个问题如果简化成下面这样,是否一致
- C# code
var sample = new List<List<string>>();sample.Add(new List<string> { "a", "b" });sample.Add(new List<string> { "c", "d", "e" });
我目前只知道Cocat连接多个List,但如果是多个岂不是要while cocat...
[解决办法]
这样行吗
- C# code
List<Photo> list = new List<Photo>(); var vs = from p in albums.Select(x => x.Photos) select p; foreach (var v in vs) { list.AddRange((from p in v select p).ToArray()); }
[解决办法]
一个selectMany操作而已
[解决办法]
linq处理这些很给力啊
SelectMany(x=>x),x后面还可以做很多事,例如只取第一个数据等等
[解决办法]