使用列表
已订购,我想获取下一个/上一个网址

发布于 2024-09-03 05:24:29 字数 229 浏览 3 评论 0原文

因此,我有一个通过 API 调用(我无法控制)获取的 List 集合。

该列表已排序。

public class Article 
{
     int articleID;
     string Url
}

所以我有一个 Url 值,我想用它来找出下一个和上一个 Url(如果有)。

最优雅的方式是什么?

So I have a List collection that I fetch via a API call (which I don't have any control over).

The list is ordered.

public class Article 
{
     int articleID;
     string Url
}

So I have a Url value, using that I want to figure out the next and previous Url's if any.

What's the most elegant way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

朦胧时间 2024-09-10 05:24:29

由于您的列表属于文章类型...

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

Since your list is of type 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);
雨后彩虹 2024-09-10 05:24:29

您也可以使用 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;
} 

You can do this also with LINQ, with some ugly skips and takes :)

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;
} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文