如何将基于方法的查询转换为Linq中的查询表达式

时间:2014-07-11 13:47:15

标签: linq

我有以下代码,并希望将其转换为Query表达式。 (Exp。取自msdn linq 101样本)

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

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


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

请帮帮我。

1 个答案:

答案 0 :(得分:1)

您无法执行此操作,因为查询语法不支持带有index参数的Where运算符。请参阅MSDN上的备注部分:

  

在查询表达式语法中,where(Visual C#)或Where(Visual   Basic)子句转换为。的调用   Where<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)。

如果您需要查询语法中的索引,则可以在查询之外定义它:

int index = 0;

var shortDigits = from d in digits
                  where d.Length < index++
                  select d;