c# - 用 JObject 过滤 c# 对象
问题描述
让我先说我对 C# 开发非常陌生,所以如果解决方案看起来很明显,我深表歉意。
我从用户那里得到一个 JSON 字符串,我需要根据 JSON 字符串包含的内容过滤 C# 对象列表。JSON 只能包含我的 C# 模型具有的字段,但我不知道 JSON 字符串将包含哪些字段。我的 C# 模型看起来像这样:
public class Enrollment {
public int Year { get; set; }
public int NumEnrolls { get; set; }
public int DaysIntoEnrollment { get; set; }
public string Name { get; set; }
}
JSON 将具有这些属性中的一个或多个,以及要过滤掉的值。它可能看起来像这样:
{
"Year": ["2020", "2019"],
"Name": ["CourseA", "CourseB"],
"DaysIntoEnrollment": "20"
}
我需要根据上面的 JSON 过滤我的 Enrollment 对象列表。因此,我希望最终结果包含所有不包含 2020 年或 2019 年的 Enrollment 对象。
我已经获得了一个过滤器,可以在单个属性上使用 linq,但是我的真实模型有更多可以过滤的属性,我正在寻找一个紧凑的解决方案,无论 JSON 中包含哪些属性,它都可以工作。这就是我的工作
public void GetFilteredData(string filters) {
var enrollList = new List<Enrollments>(); // Pretend this contains a list of valid Enrollment data
var json = JObject.Parse(filters); // filters string is in the json format from above
var propsToFilter =
from p in json["Year"]
select p;
var filtered = enrollList.Where(e => !propsToFilter.Contains(e.Year.ToString())));
}
有没有一种简单的方法可以做到这一点,而无需像我上面那样手动检查每个属性?
解决方案
推荐阅读
- node.js - 将架构导入另一个文件
- html - Bootstrap 在列上的高度不相等
- caching - 为什么涉及 i/o 的内存区域有时会被标记为不可缓存?
- python - 由于 geweke 无法导入 pymc3 模块
- tensorflow2.0 - 将 EfficientDet 检查点转换为 .pb
- typescript - 如何在 chrome 扩展中使用 IndexedDB?
- gdal - 错误 - 错误 1:无法找到驱动程序“ESRI”。在运行 ogr2ogr 命令时
- python - 为什么 BERT 模型找不到与我的输入位置参数匹配的选项?
- pyomo - IPOPT 使用哪些约定来构造其拉格朗日?
- algorithm - 空间复杂度和时间复杂度在以下场景中是如何工作的?