Linq中的哪里条款
问题描述:
这条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);
}
}
编辑澄清 按Iswanto圣
(digit, index) => digit.Length < index
声明变量:
(digit, index) -- digit as array of digits
条件(如where
子句中SQL
):
digit.Length < index
正确的,如果我错了? 如果我要正确的又是什么的=>
答
此:
(digit, index) => digit.Length < index
digit
将指阵列内容(在这种情况下digits
),数据类型是String
。 index
将引用数组索引,数据类型为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
答
这方面的作用将返回从列表中,这Length
较低然后在列表中的位置的所有元素。
MSDN:Enumerable.Where<TSource> Method (IEnumerable<TSource>, Func<TSource, Int32, Boolean>)
谓词的第一个参数表示来测试元件。第二个参数表示源内元素的从零开始的索引。
它应该返回这些元素:
{ "five", "six", "seven", "eight", "nine" }
答
它选择的字符串,其长度比它的阵列中的索引小。
这只是它获取每个项目执行,给您项lambda表达式和索引,并返回一个'bool'(它用作where子句的一个鉴别符)。 – Jcl 2013-03-16 07:08:36
感谢您的快速回复,但没有得到究竟发生在哪里条款 – vikas 2013-03-16 07:12:56