草庐IT

c# - 如何将 System.Linq.Enumerable.WhereListIterator<int> 转换为 List<int>?

在下面的示例中,我如何轻松转换eventScores至List这样我就可以将它用作prettyPrint的参数?Console.WriteLine("ExampleofLINQ'sWhere:");Listscores=newList{1,2,3,4,5,6,7,8};varevenScores=scores.Where(i=>i%2==0);Action,string>prettyPrint=(list,title)=>{Console.WriteLine("***{0}***",title);list.ForEach(i=>Console.WriteLine(i));};score

c# - Task.Run 和 Func<>

如何运行一个返回值并接受参数的任务?我看到有一个重载方法Task.Run(Func)但是我怎样才能在那里传递参数呢? 最佳答案 Func不带参数。通常,您会使用lambda表达式捕获参数。例如:publicvoidDoSomething(stringtext){Tasktask=Task.Run(()=>text.Length);...}在这里text是一个捕获的变量...所以即使你只是创建一个Func,它使用方法参数。 关于c#-Task.Run和Func,我们在StackOverfl

c# - 在 Select 和 Where 调用中重用 Linq to Entities 的 Expression<Func<T, TResult>

假设我有一个实体对象定义为publicpartialclassArticle{publicId{get;set;}publicText{get;set;}publicUserId{get;set;}}根据文章的某些属性,我需要确定给定用户是否可以删除该文章。所以我添加了一个静态方法来进行检查。像这样的东西:publicpartialclassArticle{publicstaticExpression>CanBeDeletedBy(intuserId){//Addlogictobereusedherereturna=>a.UserId==userId;}}现在我可以做using(MyE

c# - 在没有这些参数的情况下将具有默认值的方法分配给 Func<>?

我希望能够做到以下几点:FunctryMethodFunc=TryMethod;TryMethod的签名如下:boolTryMethod(intvalue,intvalue2=0,doublevalue3=100.0)我不反对将方法分解为柯里化(Currying)格式,但如果有一种方法可以做到这一点,那么这样做会更有效。 最佳答案 可选参数是一种语言特性,编译器负责将对带有可选参数的方法的调用转换为带有值的完整调用。看看下面这段简单的代码,publicvoidGeneralMethod(){TestMethod(6);}public

c# - 为什么在通用序列创建器上使用 Func<> 比使用 new() 约束快得多

考虑以下代码...在我对Windows7x64PC(Inteli73GHz)上的RELEASE(不是调试!)x86构建的测试中,我获得了以下结果:CreateSequence()withnew()took00:00:00.9158071CreateSequence()withcreator()took00:00:00.1383482CreateSequence()withnew()took00:00:00.9198317CreateSequence()withcreator()took00:00:00.1372920CreateSequence()withnew()took00:00:

c# - 将 Func<T, String> 转换为 Func<T, bool>

我想我的思绪正在爆炸,试图弄清楚Funcs...如果这没有意义,我道歉,现在对我来说很有意义,但已经度过了漫长的一天......1)假设给你一个函数,它接受T并输出一个字符串:Func您能否将其转换为接受T并根据某种逻辑返回bool值的函数(在这种情况下,如果返回的字符串为空(String.IsNullOrWhiteSpace)?Func2)如果给你一个,你能做同样的事情吗Expression>并需要将其转换为Func根据返回的字符串是否为空(String.IsNullOrWhiteSpace)返回true/false?谢谢 最佳答案

c# - 为任何方法创建 Func 或 Action(在 C# 中使用反射)

我的应用程序根据设置动态加载dll来自数据库(文件、类和方法名称)。为了促进、加快和减少反射的使用,我想要一个缓存....遵循使用的想法:MethodInfo.Invoke没有任何表现形式(ReflectionPerformance-CreateDelegate(PropertiesC#))我想翻译对方法的任何调用。我想到了一些可以像这样工作的东西:publicstaticTCreate(Typetype,stringmethodName)//orpublicstaticTCreate(MethodInfoinfo)//touselikethis:varaction=Create>(t

c# - 扩展 C# 合并运算符

在我解释我想做什么之前,如果你看下面的代码,你会明白它应该做什么吗?(已更新-见下文)Console.WriteLine(Coalesce.UntilNull(getSomeFoo(),f=>f.Value)??"defaultvalue");C#已经有一个null合并运算符,它在简单对象上工作得很好,但如果您需要访问该对象的成员则无济于事。例如Console.WriteLine(getSomeString()??"default");效果很好,但在这里对您没有帮助:publicclassFoo{publicFoo(stringvalue){Value=value;}publicstr

C#:Func<> 而不是方法?

这个问题在这里已经有了答案:FuncDelegatevsFunction(6个答案)关闭9年前。这是给所有知情人士的好奇问题:使用Func而不是方法有任何危害/缺点吗?简单示例:privatestaticFunc>Foo=(i1,i2,dbc)=>(i1!=0)?dbc.Bar(i2):newList{/*somedefaultvalues...*/};对比privatestaticListFoo(inti1,inti2,DBContextdbc){returni1!=0?dbc.Bar(i2):newList{/*somedefaultvalues...*/};}

C# 将 Func<T1, object> 转换为 Func<T1, T2>

我毫不怀疑这很容易做到,但我有一个函数创建器库,可以为我创建以下形式的lambda函数:Func我希望更具体地指定out参数-基本上,我希望能够按照以下方式创建一些东西:privateFuncGetFunc(stringexpression){FuncobjFunc=CreateFunction(expression));returnobjFuncasFunc;}但是,当我尝试这个时,我得到了一个null(顺便说一句,如果我返回objFunc作为Func它不是空的,所以我知道那不是我的问题所在)。如何正确执行此操作? 最佳答案 尝试