我希望这个标题不会误导。想出一个很难。
总之。我正在筛选一个如下所示的列表:
public class Track
{
public string name { get; set; }
public int year { get; set; }
public Int64 duration { get; set; }
public List<string> genre { get; set; }
public string searchpath { get; set; }
public Album album { get; set; }
public string artistname { get; set; }
public bool IsPlaying { get; set; }
}
我正在尝试根据它的“searchpath”变量获取一个对象,它是我的可观察集合中的索引。这就是我所拥有的:
foreach (var p in Playlist.Where(p => (p.searchpath == file))) //.Where is an extension method
SongChanged.Invoke(p);
这只给了我一个对象,但不是它是Playlist-Collection中的索引。
这是我的问题:播放列表中可能有歌曲的副本,所以即使索引号也不会真的有用。 所以我认为采取三个轨道对象可能是一个好主意。列表中的前一个,我正在尝试查找列表中的下一个索引和轨道。
我如何使用这三个对象来查找中间索引?
我希望你明白我想问的是什么。谢谢。
答案 0 :(得分:4)
首先使用投影 - 选择所有项目及其索引作为匿名对象,然后执行Where
以获取正确的项目。
var lists = Playlist.Select((p, i) => new { Track = p, Index = i })
.Where(p => p.Track.searchpath == file);
foreach (var l in lists)
{
SongChanged.Invoke(l.Track);
// do what you need to do with an index using l.Index
}