直接上代码:
?1、
?public ?void Test()
? ? ? ? {
? ? ? ? ? ? var dogs = new ConcurrentDictionary<int, dog>();//字典 线程安全
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 并行生成1000万条数据条数据
? ? ? ? ? ? Parallel.For(0, 10_000_000, (i) =>
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var single = new dog
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Id = i,
? ? ? ? ? ? ? ? ? ? Name = "name" + i,
? ? ? ? ? ? ? ? ? ? Year = new Random().Next(1, 20),//狗狗活的年数
? ? ? ? ? ? ? ? ? ? CreateTime = DateTime.Now.AddSeconds(i)
? ? ? ? ? ? ? ? };
? ? ? ? ? ? ? ? dogs.TryAdd(i, single);//写入到dogs字典里
? ? ? ? ? ? });
? ? ? ? ? ? Console.WriteLine("数据成功写入"+dogs.Count/10000+"万条");
? ? ? ? ? ? Console.WriteLine("数据已生成");
? ? ? ? ? ? // PLINQ查询
? ? ? ? ? ? var watch = new Stopwatch();
? ? ? ? ? ? watch.Start();
? ? ? ? ? ? var query1 = (from n in dogs.Values.AsParallel()//这里标志用了plinq
? ? ? ? ? ? ? ? ? ? ? ? ? where n.Year > 5 && n.Year < 12
? ? ? ? ? ? ? ? ? ? ? ? ? select n).ToList();
? ? ? ? ? ? watch.Stop();
? ? ? ? ? ? Console.WriteLine("PLINQ耗时:{0}", watch.ElapsedMilliseconds);
? ? ? ? ? ? // LINQ查询
? ? ? ? ? ? watch.Restart();
? ? ? ? ? ? var query2 = (from n in dogs.Values
? ? ? ? ? ? ? ? ? ? ? ? ? where n.Year > 5 && n.Year < 12
? ? ? ? ? ? ? ? ? ? ? ? ? select n).ToList();
? ? ? ? ? ? watch.Stop();
? ? ? ? ? ? Console.WriteLine("LINQ耗时:{0}", watch.ElapsedMilliseconds);
? ? ? ? }
2、public class dog
? ? {
? ? ? ? public int Id { get; set; }
? ? ? ? public string Name { get; set; }
? ? ? ? public int Year { get; set; }
? ? ? ? public DateTime CreateTime { get; set; }
? ? }