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

如何在Linq中将基于方法的查询转换为查询表达式,linq,Linq,我有以下代码,希望将其转换为查询表达式。(示例取自msdn linq 101样品) string[]位={“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”}; var shortDigits=数字。其中((数字,索引)=>数字。长度

我有以下代码,希望将其转换为查询表达式。(示例取自msdn linq 101样品)

string[]位={“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”};
var shortDigits=数字。其中((数字,索引)=>数字。长度<索引);
foreach(短数字形式的变量d)
{
WriteLine(“单词{0}比它的值短。”,d);
}

请帮助我。

您不能这样做,因为查询语法不支持带有索引参数的
Where
运算符。见以下备注部分:

在查询表达式语法中,where(visualc#)或where(visualc Basic)子句转换为对
其中(IEnumerable,Func

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

int index = 0;

var shortDigits = from d in digits
                  where d.Length < index++
                  select d;
int索引=0;
var shortDigits=以数字形式从d开始
其中d.长度<索引++
选择d;

@user3829651使用Where调用Sum或Max是什么意思?Where和Sum是不同的方法这意味着没有办法。。那么为什么我们同时调用查询表达式和基于方法的查询呢equal@user3829651我们不认为他们是平等的。查询语法是SyntaxMethod的一小部分谢谢@Sergey的回复。
int index = 0;

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