使用 lambda 表达式
我正在对列表中的每个整数进行平方。这是代码。
class SomeIntgs
{
List<int> newList = new List<int>();
public List<int> get()
{
IEnumerable<int> intrs = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
newList.AddRange(intrs);
return newList;
}
}
我在 Main() Error 中收到错误
SomeIntgs stg = new SomeIntgs();
var qry = from n in stg.get() where (P => P*P) select n;
:“无法将 lambda 表达式转换为 bool 类型”。
请帮忙。
也请帮助我,我如何在一般上下文中处理 lambda
I am squaring each integer in a List. Here is the code.
class SomeIntgs
{
List<int> newList = new List<int>();
public List<int> get()
{
IEnumerable<int> intrs = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
newList.AddRange(intrs);
return newList;
}
}
I am getting error in Main()
SomeIntgs stg = new SomeIntgs();
var qry = from n in stg.get() where (P => P*P) select n;
Error : "Can not convert lambda expression to type bool ".
Help Please.
Also help me, how can i handle lambda in general context
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不需要
where
,试试这个:或
Enumerable.Where
用于从序列中过滤元素 - 您真正想要做的是投影一个新的序列像我上面展示的元素。You don't need the
where
, try this:or
Enumerable.Where
is used to filter elements from a sequence - what you really want to do is project a new sequence of elements like I have shown above.where
子句采用的 lambda 指定如何匹配IQueryable
中的项目。任何满足您提供的表达式的 IQueryable 成员都将被返回。 (这就是编译器抱怨布尔值的原因)。正如其他人提到的,您可以删除 where 子句来对列表中的每个项目进行平方。
The lambda that the
where
clause takes specifies how you match an item from yourIQueryable
. Any member of the IQueryable that satisfies the expression you supply will be returned. (This is why your compiler is complaining about bools).As others have mentioned, you can drop the where clause to square each item in the list.