草庐IT

表达力

全部标签

c# - 从 lambda 表达式到用户定义类型的隐式转换

我想定义从(特定)lambda表达式到用户定义类型的隐式转换。我尝试了以下方法:publicstaticimplicitoperatorDualElement(FuncatomMap){returnnewDualElement(e=>atomMap(e[0],e[1]));}然后我试了一下DualElementdubidu=(i,j)=>cost[i,j];给出“无法转换lambda表达式...因为它不是委托(delegate)类型”相反,有效的是:DualElementdideldu=(Func)((i,j)=>cost[i,j]);我想,lambda表达式没有“Func”类型,所以

c# - EntityFramework 查询操作、数据库提供程序包装、数据库表达式树

我正在尝试为EntityFramework实现数据本地化逻辑。因此,例如,如果查询选择Title属性,则在后台它应该根据当前用户文化引用Title_enGB或Title_deCH列。为此,我想重写EntityFramework中的DbExpressionCommandTrees。我以为这些trees是构建跨数据库插入/更新/选择查询的一种新的通用.NET方法。但现在命名空间System.Data.Metadata和System.Data.Common中的所有相关构造函数/工厂System.Data.Entity.dll中的.CommandTrees是内部的!(在msdn中记录为公开,例

c# - Lambda 表达式 : == vs. .Equals()

这是一个纯粹的学术问题,但在lambda表达式中使用==和.Equals有什么区别,哪个更好?代码示例:intcategoryId=-1;listOfCategories.FindAll(o=>o.CategoryId==categoryId);或intcategoryId=-1;listOfCategories.FindAll(o=>o.CategoryId.Equals(categoryId)); 最佳答案 对于引用类型,==旨在传达引用相等性——两个变量是否引用相同对象实例。.Equals()旨在传达值相等性——两个变量引用的

c# - 有没有办法将 lambda 表达式作为变量或参数传递?

我需要将lambda查询作为参数传递,下面的代码是示例,我很想为它找到一个实现,有示例:像这样的东西:varexpr1=Where(n=>n>6).OrderBy(n=>n%2==0).Select(n=>n);varexpr2=TakeWhile((n,index)=>n>=index));然后像这样使用它:publicvoidUseLambda(IEnumerablesource,lambdaExpr){varitems=Expr.Compile(source);foreach(variteminitems)Console.Writeline(item.ToString());}p

c# - Lambda 表达式以及如何组合它们?

如何使用OR将两个lambda表达式合并为一个?我尝试了以下方法,但合并它们需要我将参数传递到Expression.Invoke调用中,但是我希望将传递到新lambda中的值传递到每个子lambda中。Expression>func1=(x)=>x>5;Expression>func2=(x)=>x>lambda=Expression.Lambda>(Expression.Or(Expression.Invoke(func1),Expression.Invoke(func2)));//The9shouldbepassedintothenewlambdaandintobothchildl

c# - Lambda 表达式树解析

我正在尝试在项目中使用Lambda表达式来映射到第三方查询API。因此,我正在手动解析表达式树。如果我传入一个lambda表达式,例如:p=>p.Title=="title"一切正常。但是,如果我的lambda表达式如下所示:p=>p.Title==myaspdropdown.SelectedValue使用.NET调试器,我看不到该函数的实际值。相反,我看到类似的东西:p=>p.Title=(value(ASP.usercontrols_myaspusercontrol_ascx).myaspdropdown.SelectedValue)什么给了?当我尝试将表达式的右侧作为字符串获取时

C# Lambda 表达式和 NHibernate

我是NHibernate伟大世界的新手。我使用的是2.0.1.GA版。这是我的问题。我有一个表Cars,其中包含列Manufacturer(nvarchar(50))和一个主键ID(int)。我的.NET类是:publicclassCar{publicvirtualintID{get;set;}publicvirtualstringManufacturer{get;set;}}现在,如果我想检索梅赛德斯制造的所有汽车,我必须输入:using(varsession=OpenSession()){varcars=session.CreateCriteria(typeof(Car)).Add

c# - 如何在 C# 中返回委托(delegate)函数或 lambda 表达式?

我正在尝试编写一个方法来返回其自身的一个实例。伪代码为Func>MyFunc(Tinput){//dosomeworkwithinputreturnMyFunc;}看起来很简单。但是我在定义返回类型时遇到问题。返回类型应该是委托(delegate)whichtakesTasparameter,thenreturnsafunctionwhichtakesTasparameter,thenreturnsafunctionwhichtakesTasparameter,thenreturnsafunction...recursivedefinition我确信有一些我没有注意到的细微之处。有人可

c# - 创建一个 Action<T> 到 "set"属性,当我为 "get"提供 LINQ 表达式时

我希望能够生成编译表达式来设置属性,给定为属性提供“get”方法的lambda表达式。这是我正在寻找的:publicActionCreateSetter(Expression>getter){//returnsacompiledactionusingthedetailsofthegetterexpressiontree,ornull//ifthewritepropertyisnotdefined.}我仍在努力理解各种类型的Expression类,因此,如果您能为我指明正确的方向,那就太好了。 最佳答案 以@Ani的回答为起点,您可以

c# - Moq:Lambda 表达式作为参数并在返回中评估它们

在我的单元测试中,我希望能够在接受lambda表达式的工作单元中最小化存储库的“查找”功能。例如:publicvirtualIQueryableFind(Expression>predicate){//FindOPS}我在我的单元测试中创建了测试列表来表示我的dbSet(我还省略了很多抽象以使这个问题更简单):[TestMethod]publicvoidFindTest(){varmockUnitOfWork=newMock();vartestList=newList{//Testvalues}//HereiswhereIamstuck:mockUnitOfWork.Setup(uow