【翻译】Pro LINQ Language Integrated Query in C# 2008 -- 第三章 (LINQ TO Objects) 第三节

Func 委托

个别的标准查询操作是获取 Func 委托是一个参数的原型 。

这是防止你不必显式声明委托类型。 下面是 Func 委托声明:

几个标准查询运算符是原型才能 Func 委托作为参数。 这防止不必显式声明委托类型。 下面是 Func 委托声明:

public delegate TR Func<TR>();
public delegate TR Func<T0, TR>(T0 a0);
public delegate TR Func<T0, T1, TR>(T0 a0, T1 a1);
public delegate TR Func<T0, T1, T2, TR>(T0 a0, T1 a1, T2 a2);
public delegate TR Func<T0, T1, T2, T3, TR>(T0 a0, T1 a1, T2 a2, T3 a3);

在每一个声明中,TR 是指返回的数据类型。请注意返回类型参数,TR,是每个重载 Func 委托的参数类型模板的最后一个参数。 其他类型参数,T0,T1,T2,T3,是输入参数传递给方法。多个声明是存在的,因为一些标准查询操作需要更多参数的委托作为参数。通过查看声明,你可以看到非标准查询操作有一个委托参数需要多于四个输入参数。

让我们看一看其中一个原型 Where 的操作:

    public static IEnumerable<T> Where<T>(
        this IEnumerable<T> source,
        Func
<T, bool> predicate);

Predicate 参数是 Func<T, bool> 类型。 从这里,你可以看到Predicate方法或Lambda表达式,更好的接受一个单一的T 参数,并返回一个bool。你知道返回类型是最后一个参数指定的。

当然,你可以使用 Func 声明,就像示例 3-6 中所示.

示例 3-6. 一个使用 Func 委托声明的例子

// Create an array of ints.
int[] ints = new int[] { 1,2,3,4,5,6 };
// Declare our delegate.
Func<intbool> GreaterThanTwo = i => i > 2;
// Perform the query  not really. Don't forget about deferred queries!!!
IEnumerable<int> intsGreaterThanTwo = ints.Where(GreaterThanTwo);
// Display the results.
foreach(int i in intsGreaterThanTwo)
    Console.WriteLine(i);

 

运行结果如下:

3
4
5
6

按字母顺序、交叉引用排列标准查询操作符

表 3-1 按字母顺序显示了标准查询操作符列表。因为这些操作符将在各章中出现,基于它们是否延迟,此表将帮助您在 LINQ to Objects 剩余的各章中找到每个操作符。

表 3-1 按字母顺序、交叉引用排列标准查询操作符

image

image

posted @ 2008-04-09 22:37 H2O、winnerzone 阅读(1791) 评论(6)  编辑 收藏 所属分类: Linq To SQL翻译

  回复  引用  查看    
#1楼 2008-04-10 08:24 | 李战      
路过,学习。
  回复  引用  查看    
#2楼 2008-04-10 09:05 | 生鱼片      
支持下
  回复  引用  查看    
#3楼 2008-04-10 09:08 | 图灵公司杨福川 [未注册用户]
包先生:您好!

我是人民邮电出版社图灵公司(www.turingbook.com)的策划编辑杨福川,今天有幸在博客园上拜读了您的博文,受益匪浅,向您的奉献精神致敬。

您正在翻译一本LINQ方面的书,不知道您是自发翻译,还是有出版社委托您翻译。国内的IT界很需要您这样的热衷于翻译工作、有奉献精神的人。图灵公司每年都会大量引进国外出版社的经典著作,希望我们能在翻译上能展开合作。期待能与您取得联系(MSN erwa_yang@hotmail.com) 。

  回复  引用  查看    
#4楼 [楼主]2008-04-10 09:24 | H2O、winnerzone      
@图灵公司杨福川
没有出版社找我做这本书的翻译,我只是看到这本书比较好,然后自己翻译玩的,
不过翻译了这么多章后,发现如果不翻译完,就对不起一直关注我的这些朋友们。

  回复  引用  查看    
#5楼 2008-04-10 10:21 | ÿ [未注册用户]
被出版社看上了,是好事,有钱攥了。对博客园就又多了一个发布出书广告的博主了。我们的免费早餐有少了。
  回复  引用  查看    
#6楼 [楼主]2008-04-10 10:26 | H2O、winnerzone      
@&#255;
放心吧,我会尽量把这本书都翻译完的。出版社的事情我暂时不做考虑。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-09 22:39 编辑过
 
另存  打印
最新IT新闻:
· 微软高管:Wii用户最终会成为Xbox 360用户
· 遵守YouTube案裁定 谷歌将陷入隐私指控深渊
· iPhone入华在即 中国手机产业生存面临考验
· 阿里巴巴集团再向淘宝注资20亿元
· 56被关一月 危机的是整个视频业