我是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)
有人可以解释这种行为..
我创建了一个计算器,该计算器具有带数字的按钮和用于基本操作(+,-,...)的运算符,只想过滤带数字的按钮以检测单击数字的时间(介于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)
如何使上层代码可行?
有没有办法让下面的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) 我需要在分组后将项目列表的位置编入索引
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获取列表的项索引?
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 …
我们公司购买了一个用.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获取验证值?
我有一个IQueryable<MyType>.MyType具有ID,Value和TypeId属性.
如何使用Lambda表达式将所有TypeId属性放入新列表中?
我试图在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)
工作.真的无法分辨出发生了什么.
我有一个叫做"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) 我在尝试创建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)