List. orderby()基于Contains()排序
本文关键字:基于 Contains 排序 orderby Uri List | 更新日期: 2023-09-27 18:09:25
我定义了一个标准的List<Uri>
,其中包含一个简短的项目列表。我想使用foreach()来迭代列表,但我想把那些包含特定字符串值的项目"放在首位",以便先处理它们。这在OrderBy()中是可能的吗?更好的是,在一行中是可能的吗?谢谢!
你可以这样做:
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);