我正在尝试将AsParallell()
与AsOrdered()
方法一起使用,但始终会看到无序的结果。
using System;
using System.Linq;
using System.Collections.Generic;
namespace Parallel
{
class MainClass
{
public static void Main(string[] args)
{
List<String> cities = new List<String>() {
"Barcelona",
"Valencia",
"Sevilla",
"Zaragoza",
"Málaga",
"Murcia",
"Palma",
"Las Palmas de Gran Canaria",
"Alicante",
"Madrid",
"Córdoba",
"Valladolid",
"Tarrasa",
"Vigo",
"Gijón",
"Cartagena",
"Hospitalet de Llobregat",
"Vitoria",
"La Coruña",
"Granada",
"Elche",
"Oviedo",
"Badalona"
};
var filtered = cities.AsParallel().AsOrdered().Where(c => c.ToUpper().StartsWith("B") || c.ToUpper().EndsWith("A")).ToArray();
Console.WriteLine("Cities starting with \"B\" or ends with \"A\"");
foreach (String city in filtered)
{
Console.WriteLine(city);
}
}
}
}
输出为:
以“ B”开头或以“ A”结尾的城市
巴塞罗纳
巴伦西亚
塞维利亚
萨拉戈萨
马拉加
穆尔西亚
帕尔玛
大加那利岛拉斯帕尔马斯
科尔多瓦
塔拉萨
卡塔赫纳
维多利亚
拉科鲁尼亚
格拉纳达
巴达洛纳
按任意键继续...
怎么了?
我正在Mac的Net Core项目中使用Visual Studio。
谢谢
最佳答案
AsOrdered()
只是保持List<string>
中项目的原始顺序。如果要按字母顺序订购商品,可以使用OrderBy
方法:
var filtered = cities.AsParallel().Where(c => c.ToUpper().StartsWith("B") || c.ToUpper().EndsWith("A")).OrderBy(x => x).ToArray();