List. orderby()基于Contains()排序

本文关键字:基于 Contains 排序 orderby Uri List | 更新日期: 2023-09-27 18:09:25

我定义了一个标准的List<Uri>,其中包含一个简短的项目列表。我想使用foreach()来迭代列表,但我想把那些包含特定字符串值的项目"放在首位",以便先处理它们。这在OrderBy()中是可能的吗?更好的是,在一行中是可能的吗?谢谢!

List<Uri>. orderby()基于Contains()排序

你可以这样做:

foreach(var uri in uriList.OrderByDescending(uri => uri.ToString().Contains("foo"))
{
    // Use uri

是。您可以使用返回布尔值的顺序来使用OrderByDescending() -例如:

var results = items.OrderByDescending( x => x.Name=="Herbert").ToList();

在这种情况下,命令将为"Herbert"返回true,为所有其他值返回false。所有true值将在所有false值之后排序 -我们通过使用OrderByDescending()颠倒顺序并获得期望的结果。

适用于你的Uri列表和Contains(),它也返回一个布尔值,这意味着:

foreach(var uri in uriList.OrderByDescending(x => x.ToString().Contains(someString))
{
   //..
}

其他人使用orderby降序,这将工作,但您要求使用OrderBy,所以这里:

yourList.OrderBy(u => u.AbsoluteUri.Contains("somevalue") ? string.Empty : u.AbsoluteUri);