永发信息网

在.net的linq技术中,什么子句可用于访问单个数据源中的内部集合

答案:2  悬赏:0  手机版
解决时间 2021-03-16 20:34
在.net的linq技术中,什么子句可用于访问单个数据源中的内部集合
最佳答案
.net framworker 3.5增加的新特性

LINQ(Language Integrated Query)是Visual Studio 2008中的领军人物。借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQL Server、XML以及内存中的数据集合。开发人员也可以使用其提供的扩展框架添加更多的数据源,例如MySQL、Amazon甚至是Google Desktop。
一般来讲,这类查询语句的一个重要特点就是可以并行化执行。虽然有些情况下并行可能会带来一些问题,但这种情况非常少见。这样也就水到渠成地引出了PLINQ这个并行处理的LINQ类库。
PLINQ原名为Parallel LINQ,支持XML和内存中的数据集合。执行于远程服务器上的查询语句(例如LINQ to SQL)显然无法实现这个功能。
将LINQ语句转换为PLINQ语句极为简单——只需要在查询语句中From子句所指定的数据源的最后添加.AsParallel()即可。随后Where、OrderBy和Select子句将自动改为调用这个并行的LINQ版本。
据MSDN Magazine介绍,PLINQ可以以三种方式执行。第一种是管道处理:一个线程用来读取数据源,而其他的线程则用来处理查询语句,二者同步进行——虽然这个单一的消费线程可能并不那么容易与多个生产线程同步。不过若是能够仔细配置好负载平衡的话,仍然会极大地减少内存占用。
第二种模式叫做“stop and go”,用于处理结果集需要被一次返回时(例如调用ToList、ToArray或对结果排序)的情况。在这种模式下,将依次完成各个处理过程,并将结果统一返回给消费线程。这个模式在性能上将优于第一种模式,因为它省去了用来保持线程同步所花费的开销。
最后一种方法叫做“inverted enumeration”。该方法并不需要实现收集到所有的输出,然后在单一的线程中处理,而是将最终调用的函数通过ForAll扩展传递到每个线程中。这是目前为止最快的一种处理模式,不过这需要传递到ForAll中的函数是线程安全的,且最好不包含任何lock之类的互斥语句。
若是PLINQ中任意的一个线程抛出异常,那么所有的其他线程将会被终止。若是抛出了多个异常,那么这些异常将被组合成一个MultipleFailuresException类型的异常,但每个异常的调用堆栈仍会被保留。
全部回答
任务占坑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
赣州机电销售有限公司我想知道这个在什么地方
欧语卫浴地址在哪,我要去那里办事
kara那首歌最红啊
我和我老公吵架。都是我在说。他不说话。等我
自己做护肤品彩妆 怎样才能有效推广 而不是让
3D画笔是什么?在哪买?
当天还信用卡分了两次,钱不够全额,差几百是
10斤60度的米酒可以放小车内回广西吗
哥哥零食临沂店怎么去啊,有知道地址的么
“它”字是什么意思
数学大师必练题的试看码怎么用?试看期限多久
兀术花园在什么地方啊,我要过去处理事情
齐鲁工业大学的高分子材料与工程如何?
臧珵婉菡这个名字好吗
一个女孩我对她说,你是急着想嫁人了吧!女孩
推荐资讯
乳酸依沙吖啶溶液可以在撵痘痘时用来消毒吗
长安铃木铃羊发动机盖怎么打开
固定无偿献血者的重要性是什么
以续瀹祠蒸尝是什么意思
江西高安瓷砖便宜吗
歌词里有风翩翩,雨渐渐是什么歌
有没有人可以借钱给我,我最近真的很困难,接
大宋提刑官宋慈的夫人
中国移动通信大丰斗龙指定专营店在哪里啊,我
王芳玉口腔诊所怎么去啊,有知道地址的么
物尔美超市这个地址在什么地方,我要处理点事
问新买的电脑应该装些什么软件
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?