标签: lambda

在列表<>上选择和ForEach

我是C#的新手,并试图使用lambda表达式.

我有一个对象列表.我想从列表中选择项目并对所选项目执行foreach操作.我知道我可以在不使用lambda表达式的情况下完成它但是想要使用lambda表达式这是可能的.

所以我试图取得类似的结果

        List<UserProfile> users = new List<UserProfile>();
       ..load users with list of users
        List<UserProfile> selecteditem = users.Where(i => i.UserName=="").ToList();
        foreach(UserProfile item in selecteditem)
        {
            item.UserName = "NA";
        }
Run Code Online (Sandbox Code Playgroud)

有可能做到

      users.Where(i => i.UserName=="").ToList().ForEach(i=>i.UserName="NA");
Run Code Online (Sandbox Code Playgroud)

但不是这样的

     users.select(i => i.UserName=="").ForEach(i=>i.UserName="NA");
Run Code Online (Sandbox Code Playgroud)

有人可以解释这种行为..

c# lambda

0
推荐指数
2
解决办法
2万
查看次数

如何在C#中使用Contains和Linq方法在字符串中搜索数字?

我创建了一个计算器,该计算器具有带数字的按钮和用于基本操作(+,-,...)的运算符,只想过滤带数字的按钮以检测单击数字的时间(介于0到9之间)。我也把新的eventhadler转换成按钮发送者。

我想知道什么是用数字过滤按钮的好方法(使用linq),到目前为止我尝试了什么

if(btn.Text == btn.Text.Contains(x => x >= '0' && x <= '9')) 
    MessageBox.Show("number " + btn.Text + " is pressed!");
Run Code Online (Sandbox Code Playgroud)

如何使上层代码可行?

c# linq lambda contain

0
推荐指数
1
解决办法
1203
查看次数

lambda/LINQ中的变量

有没有办法让下面的lambda表达式将方法调用移动ConvertFilterType(filter.FilterTypeId)到一个变量中,因此不会为每个条件重复调用它?

此if语句确保集合包含所有必需的过滤器.

if (run.Filters.All(
           filter => (ConvertFilterType(filter.FilterTypeId) != FilterType.A)
                  && (ConvertFilterType(filter.FilterTypeId) != FilterType.B)
                  && (ConvertFilterType(filter.FilterTypeId) != FilterType.C)
                  && (ConvertFilterType(filter.FilterTypeId) != FilterType.D)
                  && (ConvertFilterType(filter.FilterTypeId) != FilterType.E)))
    {
       throw new ArgumentException();
    } 
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

0
推荐指数
1
解决办法
81
查看次数

在Select语句中获取列表的项索引

我需要在分组后将项目列表的位置编入索引

var result = from i in items
             group i by i.name into g
             select new { groupname = g.Key, 
                          index = //need to get the index of the item
                        };
Run Code Online (Sandbox Code Playgroud)

如何使用linq/lambda获取列表的项索引?

c# linq lambda

0
推荐指数
1
解决办法
2026
查看次数

Convert T-SQL into LINQ Lambda

How can i write this query in LINQ lambda expression or query syntax if required? I have been trying for a while now. The multiple joins are making it difficult. The total records on the join are over 2000 and the final result should be about 15 records

select 
    year([date]), 
    month([date]),
    sum(ot.rate)
from s as s 
join cs cs on cs.s_id= s.id
join ot ot on ot.id = cs.o_id
group by
    year([date]), 
    month([date])
Run Code Online (Sandbox Code Playgroud)

this is the closest I have got …

c# t-sql linq sql-server lambda

0
推荐指数
1
解决办法
459
查看次数

C#无法从lambda表达式获取值

我们公司购买了一个用.NET编写的应用程序,我很荣幸能够支持它.我从未使用过.NET,因此我需要一些有关如何使用lambda的指导.

在我的cshtml文件中,我试图获取一个值并验证它是否为NULL.

我试过这样做

var appointment = x => x.AppointmentDate;
Run Code Online (Sandbox Code Playgroud)

我收到编译器错误" 无法将lambda表达式赋值给隐式类型的局部变量 ".我用Google搜索了错误并尝试了以下内容.

Func<DateTime, DateTime> appointment = x => x.AppointmentDate;
Run Code Online (Sandbox Code Playgroud)

但是现在编译器给出了这个错误" 'System.DateTime'不包含'AppointmentDate'的定义,并且没有可以找到接受类型'System.DateTime'的第一个参数的扩展方法'AppointmentDate'(你是否缺少using指令或装配参考?) "

如何从lambda获取验证值?

c# lambda

0
推荐指数
1
解决办法
915
查看次数

在对象集合中,如何从每个对象中提取一个属性到新列表?

我有一个IQueryable<MyType>.MyType具有ID,Value和TypeId属性.

如何使用Lambda表达式将所有TypeId属性放入新列表中?

.net c# lambda

0
推荐指数
1
解决办法
99
查看次数

使用lambda函数过滤iterables

我试图在Python中解决Project Euler问题2,并决定基于iterables的策略.

这是Fibonacci序列的生成器,

def fnFibonacci():
    fibNumPrev, fibNumCurrent = 0, 1
    while True:
        yield fibNumCurrent
        fibNumPrev, fibNumCurrent = fibNumCurrent, fibNumCurrent + fibNumPrev
Run Code Online (Sandbox Code Playgroud)

当我尝试过滤掉小于4百万且可被2整除的斐波那契数字时,它不起作用,将所有内容过滤掉:

sum(list(itertools.takewhile(lambda x: x < 4e6 and x % 2 == 0 , fnFibonacci())))
Run Code Online (Sandbox Code Playgroud)

但是,这两个(忽略了均匀条件):

sum(list(itertools.takewhile(lambda x: x < 4e6, fnFibonacci())))
Run Code Online (Sandbox Code Playgroud)

这个列表理解:

sum([fibNum for fibNum in list(itertools.takewhile(lambda x: x < 4e6, fnFibonacci())) if fibNum % 2 == 0])
Run Code Online (Sandbox Code Playgroud)

工作.真的无法分辨出发生了什么.

python lambda python-itertools python-3.x

0
推荐指数
1
解决办法
264
查看次数

通过在C#中使用String.Split()方法或Linq Lambda表达式从给定字符串中查找拆分字符长度的最佳方法是什么

我有一个叫做"RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa"的字符串.我想知道给定字符串中可用的"a"字符数.据我所知,我找到了两种方法来查找计数.那是:1)通过使用String.Split()2)Linq Lambda表达式

我的观察:

1)如果我使用String.Split()它返回错误的结果2)如果我使用Linq Lambda表达式它返回正确的结果.

这里我的疑问是如何通过使用String.Split()从给定的字符串中获取给定的拆分字符的计数

还请建议我从给定的字符串"String.Split()"或"Linq Lambda"表达式中获取给定分割字符数的最佳方法是什么?

请找到完整的例子:

                                                                                                                   using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SplitData
{
    class Program
    {
        static void Main(string[] args)
        {
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'a');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'r');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'R');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'm');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'd');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'g');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 's');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'o');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'c');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'u');
            SplitData("RamaSubbaReddyabcdaacacakkkoooahgafffgahgghsa", 'f');


            Console.ReadKey();
        }

        private static void SplitData(string data,char split)
        {

            // using lambda expresion
            int len = data.AsEnumerable().Where(x => x.ToString().ToLower().Contains(split)).Count();  
            Console.WriteLine("Total '" + split + "' available are:{0} using lambda", len.ToString()); …
Run Code Online (Sandbox Code Playgroud)

c# linq string lambda split

0
推荐指数
1
解决办法
887
查看次数

无法将lambda转换为std :: function

我在尝试创建API时遇到MiniGW问题.这在MSVC11(Visual Studio 2012 C++编译器)中工作正常.我的编译器(我相信)设置正确QMAKE_CXXFLAGS += -std=c++0x,毕竟我有一个lambda错误消息.

有关更多解释:

typedef std::function<bool(Item)> WHERE;//I was attempting to provide an explicit cast, 'auto' works fine in MSVS

Group where(WHERE func);//A simple "foreach boolean" search

使用上面的 - >

Groups::WHERE where = [](Item & x)-> bool{return x.has("NEW");};

结果是:

tst_groupstest.cpp:257:错误:从'GroupsTest :: groups():: __ lambda1'转换为非标量类型'Groups :: WHERE {aka std :: function}'请求Groups :: WHERE where = [](Item &x) - > bool {return x.has("NEW");};

我希望这是明显的,我找不到它.我计划通过这个项目支持Linux和Mac,所以我很想早点解决这个问题.

这是我当前的解决方法,如果可能的话,我宁愿远离这个(毕竟,我设计它的原因是考虑到lambdas的API就是拥有明显的简洁代码块).

本节编译(不使用lambdas)

struct lambdaCueListstdFunc{
    bool operator()(Groups::Item x)
    {
        return x.has("NEW");
    }
};

/**
 * …
Run Code Online (Sandbox Code Playgroud)

c++ lambda mingw c++11 visual-studio-2012

0
推荐指数
1
解决办法
1726
查看次数