2014-02-07 143 views
2

我希望這個標題不會誤導。想出一個很難。不管怎樣,我通過過濾,看起來像這樣的列表:從ObservableCollection獲取索引和對象<t>。在這裏

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

} 

而我試圖讓一個對象,它在我的觀察集合指數基於它的「搜索路徑」變量。這是我有:

foreach (var p in Playlist.Where(p => (p.searchpath == file))) //.Where is an extension method 
         SongChanged.Invoke(p); 

這隻給我的對象,但不是它在播放列表集合中的索引。

這是我的問題:播放列表中可能有歌曲的副本,所以即使是索引號也不會有太大的作用。 所以我認爲這是一個好主意,採取三個軌道對象。列表中的前一個,我試圖找到列表中的下一個索引。

我將如何使用這三個對象來找到中間人的索引?

我希望你明白我想問什麼。謝謝。

回答

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 
} 
+0

啊,非常好。非常感謝 :) – Tokfrans

相關問題