使用已订购的List <article>,我想获得下一个/上一个URL </article>

时间:2010-05-28 19:27:35

标签: c# collections

所以我有一个List集合,我通过API调用获取(我没有任何控制权)。

列表已订购。

public class Article 
{
     int articleID;
     string Url
}

所以我有一个Url值,使用它我想找出下一个和之前的Url(如果有的话)。

这样做最优雅的方式是什么?

2 个答案:

答案 0 :(得分:6)

由于您的列表属于Article ...

var foundIndex = articles.FindIndex(a => a.Url == "myUrl");
var previousUrl = (foundIndex > 0 ? articles[foundIndex - 1].Url : null);
var  nextUrl = (foundIndex < articles.Count-1 ? articles[foundIndex + 1].Url : null);

答案 1 :(得分:0)

您也可以使用LINQ执行此操作,但需要执行一些简单的操作并执行以下操作:)

class Program
{
    static void Main(string[] args)
    {
        List<Article> list = new List<Article>() { 
            new Article() { articleID = 1, Url = "http://localhost/1" }, 
            new Article() { articleID = 2, Url = "http://127.0.0.1/2" },
            new Article() { articleID = 3, Url = "http://localhost/3" }, 
            new Article() { articleID = 4, Url = "http://127.0.0.1/4" }
        };

        var coll = (from e in list select e).Skip((from e in list where e.Url.Equals("http://localhost/3") select list.IndexOf(e)).First() - 1).Take(3);

        Console.WriteLine(coll.First().Url);
        Console.WriteLine(coll.Last().Url);

        Console.ReadKey();
    }
}

public class Article  
{ 
    public int articleID;
    public string Url;
}