net工具函数 linq Parallel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ParallelLinq {
    //博文推荐
    //https://www.codeproject.com/articles/156980/parallelism-in-net-plinq
    class Program {
        static void Main (string[] args) {
            var customers = new [] {
                new Customer { ID = 1, FirstName = "Sandeep", LastName = "Ramani" },
                new Customer { ID = 2, FirstName = "Dharmik", LastName = "Chotaliya" },
                new Customer { ID = 3, FirstName = "Nisar", LastName = "Kalia" },
                new Customer { ID = 4, FirstName = "Ravi", LastName = "Mapara" },
                new Customer { ID = 5, FirstName = "Hardik", LastName = "Mistry" },
                new Customer { ID = 6, FirstName = "Sandy", LastName = "Ramani" },
                new Customer { ID = 7, FirstName = "Jigar", LastName = "Shah" },
                new Customer { ID = 8, FirstName = "Kaushal", LastName = "Parik" },
                new Customer { ID = 9, FirstName = "Abhishek", LastName = "Swarnker" },
                new Customer { ID = 10, FirstName = "Sanket", LastName = "Patel" },
                new Customer { ID = 11, FirstName = "Dinesh", LastName = "Prajapati" },
                new Customer { ID = 12, FirstName = "Jayesh", LastName = "Patel" },
                new Customer { ID = 13, FirstName = "Nimesh", LastName = "Mishra" },
                new Customer { ID = 14, FirstName = "Shiva", LastName = "Reddy" },
                new Customer { ID = 15, FirstName = "Jasmin", LastName = "Malviya" },
                new Customer { ID = 16, FirstName = "Haresh", LastName = "Bhanderi" },
                new Customer { ID = 17, FirstName = "Ankit", LastName = "Ramani" },
                new Customer { ID = 18, FirstName = "Sanket", LastName = "Shah" },
                new Customer { ID = 19, FirstName = "Amit", LastName = "Shah" },
                new Customer { ID = 20, FirstName = "Nilesh", LastName = "Soni" }
            };
            var results = from c in customers
            where c.FirstName.StartsWith ("San")
            select c;
            //使用Parallel并行查询
            var resultsUserParallel = from c in customers.AsParallel ()
            where c.FirstName.StartsWith ("San")
            select c;
            //对并行查询的结果排序,AsOrdered影响性能,最好不用
            var resultsUserAsOrdered = from c in customers.AsParallel ().AsOrdered ()
            where c.FirstName.StartsWith ("San")
            select c;
            //强制使用Parallel并行查询,如果让AsParallel自己决定的话
            //有可能它会选择原来的Linq的执行方式
            var resultsForceParallelism = from c in customers.AsParallel ().WithExecutionMode (ParallelExecutionMode.ForceParallelism)
            where c.FirstName.StartsWith ("San")
            select c;
            //确定并行执行使用CPU的最多的数量
            var resultsDegreeOfParallelism = from c in customers.AsParallel ().WithDegreeOfParallelism (2)
            where c.FirstName.StartsWith ("San")
            select c;
            //随机产生一个有序的数
            IEnumerable<int> evens = ((ParallelQuery<int>) ParallelEnumerable.Range (0, 50000))
                .Where (i => i % 2 == 0)
                .Select (i => i).ToList ();
            //使用并行产生重复的数字ParallelQuery<TResult>
            int sum = ParallelEnumerable.Repeat (2, 50000).Select (i => i).Sum ();
            Console.WriteLine (sum);
            Console.ReadKey ();
        }
    }
    public class Customer {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

作者:spike

分类: Net

创作时间:2023-06-25

更新时间:2024-12-09

联系方式放在中括号之中例如[[email protected]],回复评论在开头加上标号例如:#1