Removenullpropertyfromobject想从下面的对象中删除它是我的代码。公共类TestClass{公共字符串名称{得到;放;}publicintID{得到;放;公共日期时间?日期时间{得到;放;}公共字符串地址{得到;放;}}TestClasst=newTestClass();t.Address="地址";t.ID=132;t.Name=string.Empty;t.DateTime=空;现在我想要TestClass的对象,但是Name和DateTime属性不应该在对象中,是否可能?请帮助我,我很无聊,在LINQPad中得到了这个voidMain(){TestClasst=newTestClass();t.Address="地址";t.ID=132;t.Name=string.Empty;吨。日期时间=空;t.Dump();varret=t.FixMeUp();((对象)ret).转储();}publicstaticclassReClasser{publicstaticdynamicFixMeUp(thisTfixMe){vart=fixMe.GetType();varreturnClass=newExpandoObject()作为IDictionary;foreach(varprint.GetProperties()){varval=pr.GetValue(fixMe);if(valisstring&&string.IsNullOrWhiteSpace(val.ToString())){}elseif(val==null){}else{returnClass.Add(pr.Name,val);}}返回返回类;}}publicclassTestClass{publicstringName{get;放;}publicintID{得到;放;公共日期时间?日期时间{得到;放;}公共字符串地址{得到;目的。特别是,使用这样的方法总是有效:publicvoidShowDateTime(TestClasst){Console.WriteLine(t.DateTme);代码无法知道您是否要从t引用的对象中“删除”DateTime属性。如果该值为null,它将获得该值-这很好。但是您不能删除属性本身。如果您在某处列出对象的属性,则应该在那里进行过滤。编辑:好的,不,你给了我们一些背景知识:好吧,我使用的是Schemaless数据库,所以空值和空值也作为空格存储在数据库中,这就是原因所以,在代码中你是用于填充该数据库,只是不要设置与具有空值的属性对应的任何字段。这纯粹是一个数据库填充问题——而不是对象本身的问题。(我还认为您应该考虑这样做可以节省多少空间。你真的那么在意吗?)可能是一个方便的接口:publicinterfaceIAdressAndId{intID{get;放;}字符串地址{得到;放;}}publicinterfaceINameAndDate{字符串名称{get;放;}约会时间?日期时间{得到;放;}}publicclassTestClass:IAdressAndId,INameAndDate{publicstringName{get;放;}publicintID{得到;放;公共日期时间?日期时间{得到;放;}公共字符串地址{得到;IAdressAndIdt=newTestClass(){Address="address",ID=132,Name=string.Empty,DateTime=null};此外,您可以将您的接口放在一个单独的命名空间中,并将您的类声明作为内部。之后创建一些公共工厂,这些工厂将创建该类的实例。您可以利用动态类型:classProgram{staticvoidMain(string[]args){Listlist=newList();动态t1=newExpandoObject(),t2=newExpandoObject();t1.Address="地址1";t1.ID=132;t2.Address="地址2";t2.ID=133;t2.Name="someName";t2.DateTime=DateTime.Now;list.AddRange(new[]{t1,t2});//稍后在你的代码中);((IDictionary)item.obj).ToList().ForEach(i=>{Console.WriteLine("属性:{0}值:{1}",i.Key,i.Value);});控制台.WriteLine();});//或者可能生成JSONvars=JsonSerializer.Create();varsb=newStringBuilder();varw=newStringWriter(sb);varitems=list.Select(item=>{sb.Clear();s.Serialize(w,item);returnsb.ToString();});items.ToList().ForEach(json=>{Console.WriteLine(json);});因此,接受的答案的“稍微”更清晰和更短的版本。以上就是C#学习教程:删除对象的null属性全部内容分享。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——///只填充了对象属性的动态对象publicstaticobjectConvertToObjectWithoutPropertiesWithNullValues(thisTobjectToTransform){vartype=objectToTransform.GetType();varreturnClass=newExpandoObject()作为IDictionary;foreach(varpropertyInfointype.GetProperties()){varvalue=propertyInfo.GetobjectToTransform);varvalueIsNotAString=!(valueisstring&&!string.IsNullOrWhiteSpace(value.ToString()));if(valueIsNotAString&&value!=null){returnClass.Add(propertyInfo.Name,value);}}返回返回类;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
