草庐IT

full-expression

全部标签

c# - 如何使用 System.Linq.Expressions.Expression 根据 child 进行过滤?

我有一个在许多方法中使用的过滤器:Expression>filter=child=>child.Status==1;(实际上比这更复杂)我必须做以下事情returndb.Parents.Where(parent=>parent.Status==1&&parent.Child.Status==1);条件与上面的过滤器相同。我想在此方法中重用过滤器。但我不知道怎么办。我试过了returndb.Parents.Where(parent=>parent.Status==1&&filter(parent.Child));但表达式不能用作方法 最佳答案

c# - 找不到方法 : Microsoft. WindowsAzure.ServiceModel.Service.set_IsSLBPartialGS(Microsoft.WindowsAzure.ServiceModel.Expression)

一段时间以来,我在尝试使用Azure模拟器启动任何类型的应用程序时遇到以下错误:MicrosoftAzureTools:Methodnotfound:'VoidMicrosoft.WindowsAzure.ServiceModel.Service.set_IsSLBPartialGS(Microsoft.WindowsAzure.ServiceModel.Expression)'.重启我的机器通常会暂时解决这个问题,但我往往每天都会遇到这个问题,如果我看到一次这个警告,就没有办法在不重启的情况下解决它。可悲的是,我也找不到很多文档,如果有的话。我正在使用AzureToolsV2.9。有

c# - 如何将 Enum 转换为 Int 以用于 Expression.Equals 操作?

我正在尝试在C#中动态构建一个表达式树,它被编译并用作LINQ-to-SQLWhere()调用的谓词。问题是我试图将Enum(以int作为其基础类型)直接与Int进行比较,但这失败并出现错误“成员MyEnumType没有支持的SQL转换”。代码:ParameterExpressionparam=Expression.Parameter(typeof(MyClass),"obj");//inputparameter-thisexposesapropertyoftheEnumtypeMemberExpressionenumMember=Expression.Property(param,"

c# - Linq 和相等运算符 : Expression of type 'System.Int32' cannot be used for parameter of type 'System.Object'

我试图重写C#中的相等(==)运算符来处理任何类型与自定义类型的比较(自定义类型实际上是null周围的包装器/框)。所以我有这个:internalsealedclassNothing{publicoverrideboolEquals(objectobj){if(obj==null||objisNothing)returntrue;elsereturnfalse;}publicstaticbooloperator==(objectx,Nothingy){if((x==null||xisNothing)&&(y==null||yisNothing))returntrue;returnfal

c# - 林克 "Could not translate expression... into SQL and could not treat it as a local expression."

我从thisquestion开始,我有点回答there,现在我在这里问更基本的问题。我已将查询简化为:varq=fromentinLinqUtils.GetTable()fromtelinent.Telephones.DefaultIfEmpty()selectnew{Name=ent.FormattedName,Tel=tel!=null?tel.FormattedNumber:""//thisiswhatcausestheerror};tel.FormattedNumber是一种将Number和Extension字段组合成格式整齐的字符串的属性。这是导致的错误:System.Inv

c# - EF lambda : The Include path expression must refer to a navigation property

这个问题在这里已经有了答案:EF:Includewithwhereclause[duplicate](5个答案)关闭5年前。这是我的表达:Coursecourse=db.Courses.Include(i=>i.Modules.Where(m=>m.IsDeleted==false).Select(s=>s.Chapters.Where(c=>c.IsDeleted==false))).Include(i=>i.Lab).Single(x=>x.Id==id);我知道原因是模块部分的Where(m=>m.IsDeleted==false),但为什么会导致错误?更重要的是,我该如何修复它

c# - 找不到部分路径 'C:\Program Files (x86)\IIS Express\~\TextFiles\ActiveUsers.txt'

我尝试了多种方法从名为TextFiles的文件夹访问我的VisualStudio2012解决方案中的文本文件using(System.IO.StreamWriterfile=newSystem.IO.StreamWriter(@"~/TextFiles/ActiveUsers.txt",true)){file.WriteLine(model.UserName.ToString());}但是一直报错Couldnotfindapartofthepath'C:\ProgramFiles(x86)\IISExpress\~\TextFiles\ActiveUsers.txt'.不知道哪里错了

c# - 即使 DebugType=full,也无法在 Release模式下调试应用程序

我们正在为Release构建解决方案,但是当尝试使用studio2010professional进行附加时,没有线程显示任何堆栈信息,也无法设置任何断点等。目标是能够将VisualStudio/JIT调试器附加到正在运行的进程,同时获得尽可能多的优化优势。我们的大多数搜索都归结为“使用debug:full编译”,您将能够进行调试,但情况似乎并非如此,我认为JIT会在运行时优化代码,因此我们不能调试,这是真的吗?是否可以编译并告诉JIT淡化优化并允许调试?(同时保留其他优化)更新使用@HansPassant的回答,我查看了模块,发现尽管pdb与二进制文件位于同一目录中,但确实没有加载任何

c# - 在 Visual C# 2008 Express Edition 中设置 32 位 x86 构建目标?

我正在构建一个加载32位COMdll的C#应用程序。编译后的应用程序在32位Windows上运行良好,但在64位Windows上运行失败,因为它无法加载32位COM。有没有办法在VC#2008ExpressEdition中设置32位构建目标?或者,是否有办法强制编译为AnyCPU构建目标的.NET应用程序在64位Windows上以32位模式运行? 最佳答案 为了后代,这里是adrian链接到的论坛帖子:InVC#Express,thispropertyismissing,butyoucanstillcreateanx86config

c# - 在 System.Linq.Expressions 中不带大小写(但使用默认值)切换

我尝试使用System.Linq.Expressions创建一个switch表达式:varvalue=Expression.Parameter(typeof(int));vardefaultBody=Expression.Constant(0);varcases1=new[]{Expression.SwitchCase(Expression.Constant(1),Expression.Constant(1)),};varcases2=newSwitchCase[0];varswitch1=Expression.Switch(value,defaultBody,cases1);vars