请教一个LINQ选择的问题

nonocast 2012-03-31 02:18:45
现有Album和Photo两个对象,一对多,定义如下:

public class Album {
public List<Photo> Photos { get; set; }
}

public class Photo {
public string Name { get; set; }
}

然后创建并关联,

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

这个问题如果简化成下面这样,是否一致

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...
...全文
279 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonocast 2012-03-31
  • 打赏
  • 举报
回复
学到了,之前看到SelectMany没想到派这个用
ohkuy 2012-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

C# code
var photolist=albums.SelectMany(x=>x.Photos).ToList();
[/Quote]
+1
小case 2012-03-31
  • 打赏
  • 举报
回复
linq处理这些很给力啊
SelectMany(x=>x),x后面还可以做很多事,例如只取第一个数据等等
q107770540 2012-03-31
  • 打赏
  • 举报
回复

var sample = new List<List<string>>();
sample.Add(new List<string> { "a", "b" });
sample.Add(new List<string> { "c", "d", "e" });
var demo=sample.SelectMany(x=>x).ToList();
q107770540 2012-03-31
  • 打赏
  • 举报
回复
 var photolist=albums.SelectMany(x=>x.Photos).ToList();
q107770540 2012-03-31
  • 打赏
  • 举报
回复
一个selectMany操作而已
bdmh 2012-03-31
  • 打赏
  • 举报
回复
这样行吗

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());
}

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧