C# 使用JObject筛选c对象

C# 使用JObject筛选c对象,c#,asp.net,json,json.net,C#,Asp.net,Json,Json.net,让我先说一句,我对C开发非常陌生,所以如果解决方案显而易见,我道歉 我从一个用户那里得到一个JSON字符串,我需要根据JSON字符串包含的内容过滤一个C对象列表。JSON只能包含我的C模型所包含的字段,但我不知道JSON字符串将包含哪些字段。我的C模型如下所示: 公共班级招生{ 公共整数年{get;set;} public int NumEnrolls{get;set;} public int DaysIntoEnrollment{get;set;} 公共字符串名称{get;set;} } JS

让我先说一句,我对C开发非常陌生,所以如果解决方案显而易见,我道歉

我从一个用户那里得到一个JSON字符串,我需要根据JSON字符串包含的内容过滤一个C对象列表。JSON只能包含我的C模型所包含的字段,但我不知道JSON字符串将包含哪些字段。我的C模型如下所示:

公共班级招生{ 公共整数年{get;set;} public int NumEnrolls{get;set;} public int DaysIntoEnrollment{get;set;} 公共字符串名称{get;set;} } JSON将有一个或多个这些属性以及要过滤掉的值。它可能是这样的:

{ 年份:[2020年、2019年], 姓名:[CourseA,CourseB], 注册日期:20 } 我需要根据上面的JSON过滤我的注册对象列表。因此,我希望最终结果是所有注册对象都不包含2020年或2019年,例如

我已经得到了一个过滤器,可以在单个属性上使用linq,但我的真实模型有更多可以过滤的属性,我正在寻找一个紧凑的解决方案,无论JSON中包含哪些属性都可以工作。这就是我的工作

公共无效GetFilterEdataString筛选器{ var enrollList=new List;//假设其中包含有效注册数据的列表 var json=JObject.Parsefilters;//过滤器字符串采用上面的json格式 var propsToFilter= 来自json中的p[年] 选择p; var filtered=enrollList.where=>!propsToFilter.Containse.Year.ToString; }
是否有一种简单的方法可以做到这一点,而不必像我上面所做的那样手动检查每个属性?

当您提到不必手动检查每个属性时,您的意思是选择年份,即var proposToFilter=。。或者过滤注册,即var filtered=..?Newtonsoft JSON.NET可以使用反射自动完成此操作。有些对象有一些方法,比如Parse,其中T是输出类型。@IvanVargas我指的是过滤的var,因为我需要过滤的属性在JSON字符串中。根据@flatterish所说的,我认为反思是答案,所以我将对此进行更多的研究。非常感谢。