使用 lambda 表达式

发布于 2024-08-08 03:49:03 字数 578 浏览 1 评论 0原文

我正在对列表中的每个整数进行平方。这是代码。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

幸福丶如此 2024-08-15 03:49:03

您不需要 where,试试这个:

SomeIntgs stg = new SomeIntgs();
var qry = from n in stg.get() select n*n;

var qry = stg.get().Select(P => P*P);

Enumerable.Where 用于从序列中过滤元素 - 您真正想要做的是投影一个新的序列像我上面展示的元素。

You don't need the where, try this:

SomeIntgs stg = new SomeIntgs();
var qry = from n in stg.get() select n*n;

or

var qry = stg.get().Select(P => P*P);

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.

苹果你个爱泡泡 2024-08-15 03:49:03

where 子句采用的 lambda 指定如何匹配 IQueryable 中的项目。任何满足您提供的表达式的 IQueryable 成员都将被返回。 (这就是编译器抱怨布尔值的原因)。

正如其他人提到的,您可以删除 where 子句来对列表中的每个项目进行平方。

var ints = new int []{1,2,3,4,5,6,7,8};
var squares = ints.Select(x => x*x);
var evenSquares = ints.Where(x => (x % 2) == 0).Select(x => x*x); // only square 
                                                     //the even numbers in the list

The lambda that the where clause takes specifies how you match an item from your IQueryable. 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.

var ints = new int []{1,2,3,4,5,6,7,8};
var squares = ints.Select(x => x*x);
var evenSquares = ints.Where(x => (x % 2) == 0).Select(x => x*x); // only square 
                                                     //the even numbers in the list
阪姬 2024-08-15 03:49:03
SomeIntgs stg = new SomeIntgs();
var qry = from n in stg.get() select n*n;
SomeIntgs stg = new SomeIntgs();
var qry = from n in stg.get() select n*n;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文