2013-03-16 169 views
0

这条where条款如何工作?Linq中的哪里条款

(digit, index) => digit.Length < index 

代码

public void Linq5() 
    { 
     string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; 

     var shortDigits = digits.Where((digit, index) => digit.Length < index); 

     Console.WriteLine("Short digits:"); 
     foreach (var d in shortDigits) 
     { 
      Console.WriteLine("The word {0} is shorter than its value.", d); 
     } 
    } 

Source

编辑澄清 按Iswanto圣

(digit, index) => digit.Length < index 

声明变量:

(digit, index) -- digit as array of digits 

条件(如where子句中SQL):

digit.Length < index 

正确的,如果我错了? 如果我要正确的又是什么的=>

+0

这只是它获取每个项目执行,给您项lambda表达式和索引,并返回一个'bool'(它用作where子句的一个鉴别符)。 – Jcl 2013-03-16 07:08:36

+1

感谢您的快速回复,但没有得到究竟发生在哪里条款 – vikas 2013-03-16 07:12:56

回答

1

此:

(digit, index) => digit.Length < index 

digit将指阵列内容(在这种情况下digits),数据类型是Stringindex将引用数组索引,数据类型为int

这样条件会输出具有长度小于它的索引(位置)的阵列的内容。

例如:

digits="zero", index=0 =>假,长度= 4,索引= 0

digits="one", index=1 =>假,长度= 3,索引= 1

digits="two", index=2 =>假,长度= 3,索引= 2

digits="three", index=3 =>假,长度= 5,索引= 3

digits="four", index=4 =>假,长度= 4,索引= 4

digits="five", index=5 =>真,长度= 4,索引= 5

更多:Enumerable.Where

+0

'=>'引用与C#或SQL相同? – vikas 2013-03-16 07:15:40

+0

'=>'是[lambda运算符](http://msdn.microsoft.com/en-us/library/vstudio/bb311046.aspx) – 2013-03-16 07:21:39

+0

如果我想学习Linq,那么首先我需要从lambda开始? – vikas 2013-03-16 07:32:19

2

它选择的字符串,其长度比它的阵列中的索引小。