我有一个Albums用类中的对象调用的集合Album.该类有一个属性Songs,它是一个Song对象的集合.每个Song都有一个唯一的Id.
public IQueryable<Album> Albums
public class Album
{
...
public virtual ICollection<Song> Songs { get; set; }
...
}
public class Song
{
public int Id { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
是否有可能使用Linq在专辑集中找到一首歌?我不知道怎么样,我是玲的新手.我试了一下:
Albums.FirstOrDefault(a => a.Songs.Id == id);
Run Code Online (Sandbox Code Playgroud)
非常感谢,
文森特
Dar*_*wis 15
Albums.SelectMany(a=>a.Songs).FirstOrDefault(song => song.Id == id)
Run Code Online (Sandbox Code Playgroud)
SelectMany将为所有专辑创建所有歌曲的拼合列表,然后您可以选择具有相应ID的第一首歌曲.
如果您有专辑,则需要执行此操作...
var album = GetAlbum();
var song = album.Songs.FirstOrDefault(s => s.ID == id);
Run Code Online (Sandbox Code Playgroud)
或者这个,如果你不...
var song = albumsCollection.SelectMany(s => s.Songs).FirstOrDefault(s => s.ID == id);
Run Code Online (Sandbox Code Playgroud)
如果您想返回包含给定 ID 的歌曲的专辑,您应该使用以下查询:
Albums.FirstOrDefault(a => a.Songs.Any(s => s.Id == Id));
Run Code Online (Sandbox Code Playgroud)
如果你想获取这首歌:
Albums.SelectMany(a=>a.Songs).FirstOrDefault(s => s.Id == Id);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38127 次 |
| 最近记录: |