从ObservableCollection <t> .Where </t>获取索引和对象

时间:2014-02-07 18:19:16

标签: c# parsing search

我希望这个标题不会误导。想出一个很难。

总之。我正在筛选一个如下所示的列表:

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中的索引。

这是我的问题:播放列表中可能有歌曲的副本,所以即使索引号也不会真的有用。 所以我认为采取三个轨道对象可能是一个好主意。列表中的前一个,我正在尝试查找列表中的下一个索引和轨道。

我如何使用这三个对象来查找中间索引?

我希望你明白我想问的是什么。谢谢。

1 个答案:

答案 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
}