草庐IT

new-expression

全部标签

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# - 可观察集合 : calling OnCollectionChanged with multiple new items

请注意,我正在尝试使用NotifyCollectionChangedAction.Add操作而不是.Reset。后者确实有效,但对于大型收藏来说效率不高。所以我将ObservableCollection子类化:publicclassSuspendableObservableCollection:ObservableCollection出于某种原因,这段代码:privateList_cachedItems;...publicvoidFlushCache(){if(_cachedItems.Count>0){foreach(varitemin_cachedItems)Items.Add(i

c# - Visual C# 2010 速成版 : Specify default access modifier for new classes?

每当我使用VisualStudio2010ExpressC#创建新类时,它都会创建没有访问修饰符的新类。10次中有9次我希望我的新类(class)公开。如何让VisualStudio默认使用“public”修饰符创建空类模板? 最佳答案 诀窍是创建一个名为Class的新项模板。然后,当您执行“添加”>“新建类”时,默认情况下将选择您的模板,而不是内置的类模板。(我不确定这种行为是否得到保证,但它可以在我的机器上运行(TM)。)创建模板:右键单击您的项目并选择“添加”>“类”。您可以接受默认名称(Class1)-这只是一个临时文件。修

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# - new() 的通用类型约束和抽象基类

这里我们有一个简单的类层次结构,并且将泛型与typeconstraint一起使用new()的publicabstractclassBase{}publicclassDerived:Base{}publicclassTestClass{privatevoidDoSomething(Targ)whereT:new(){}publicvoidTestMethod(){Derivedd1=newDerived();DoSomething(d1);//compilesBased2=newDerived();DoSomething(d2);//compileerror}}代码在指示的行编译失败,错

c# - PredicateBuilder.New 与 PredicateBuilder.True

我正在使用PredicateBuilder在我的操作中创建一个搜索/过滤器部分。在这里:[HttpPost]publicActionResultTest(int?cty,stringinumber,int?page){varlstValues=db.TableName.Include(x=>x.Table1).Include(x=>x.Table2).Include(x=>x.Table3).ToList();varpredicate=PredicateBuilder.True();if(!string.IsNullOrWhiteSpace(inumber)){predicate=pr

c# - 如何通过反射判断字段是否有 'new'修饰符?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:HowdoIdetectthe"new"modiferonafieldusingreflection?有如下声明publicclassB:A{publicnewstringName;}我如何确定该字段的FieldInfo实例是否具有"new"修饰符?

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# - 接口(interface)继承和new关键字

我要:publicinterfaceIBase{MyObjectProperty1{get;set;}}publicinterfaceIBaseSub:IBase{newTProperty1{get;set;}}publicclassMyClass:IBaseSub{publicYourObjectProperty1{get;set;}}但这不能编译。它给出了错误://ThisclassmustimplementtheinterfacememberIBase.Property1任何人都可以阐明这一点吗?我认为它应该工作..谢谢 最佳答案

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),但为什么会导致错误?更重要的是,我该如何修复它