我有以下代码,并希望将其转换为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);
}
请帮帮我。
答案 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;