Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将大型对象列表转换为子集对象列表_C#_List - Fatal编程技术网

C# 将大型对象列表转换为子集对象列表

C# 将大型对象列表转换为子集对象列表,c#,list,C#,List,我有一个相当大的报警对象列表,其中有许多用于内部计算的字段。my Web API的用户只需要通过JSON调用转换的计算值(但需要完整的报警对象),例如(省略错误检查代码): string apiAddress=“api/Alarms/getDigitalAlarms”; HttpResponseMessage response=等待DAServer.GetAsync(apiAddress); 字符串结果=wait response.Content.ReadAsStringAsync(); 返回J

我有一个相当大的报警对象列表,其中有许多用于内部计算的字段。my Web API的用户只需要通过JSON调用转换的计算值(但需要完整的报警对象),例如(省略错误检查代码):

string apiAddress=“api/Alarms/getDigitalAlarms”;
HttpResponseMessage response=等待DAServer.GetAsync(apiAddress);
字符串结果=wait response.Content.ReadAsStringAsync();
返回JsonConvert.DeserializeObject(结果);
在其末尾定义的Alarm类只有它们所需的字段,其属性名称和数据类型与在我的末尾定义的相同

当我们检查以json格式生成的网络流量时,它包含完整的报警对象,包括每个报警对象的内部子对象(总共超过1500个报警)。上面的JsonConvert.DeserializeObject调用丢弃了额外的信息,并且从未使用过这些信息,但是为什么要首先生成这么多不需要的流量呢


在返回列表之前,是否有“更快的方法”将我的大型报警对象转换为小型报警对象(与用户端具有相同的骨架)?更快,因为对API的调用每秒进行一次,以查看是否引发了某些报警。

您可以创建一个带有构造函数的
MiniAlarm
类,该构造函数将
报警
作为参数,然后使用LINQ和投影,如下所示:

var result = myAlarms.Select(x=> new MiniAlarm(x)).ToList();
或者,您可以在.NET上查看—我以前使用过它,而且效果很好


当然,如果这是唯一发生的序列化,您也可以在类
报警
中不关心的成员上添加
[JsonIgnore]
标记。

您可以创建一个
迷你报警
类,该类的构造函数接受
报警
作为参数,然后使用LINQ和投影,如下所示:

var result = myAlarms.Select(x=> new MiniAlarm(x)).ToList();
或者,您可以在.NET上查看—我以前使用过它,而且效果很好


当然,如果这是唯一发生的序列化,您也可以在类中不关心的成员上添加一个
[JsonIgnore]
标记。

我说的可能是显而易见的,但您从错误的角度处理问题。似乎您正在使用web api,而不是请求所有警报,他们应该提供过滤方法(比如按日期),或者更好的方法是将它们推给您我所说的可能是显而易见的,但您从错误的角度处理问题。似乎您正在使用web api,而不是请求所有警报,他们应该提供过滤方法(比如按日期过滤),或者更好的方法是将它们推给您,这应该不会比像您现在这样序列化它们慢。可能更快。嗯。。。。让我试试这个,看看它是否比我的应用程序所能容忍的要耗费更多的时间。那是一堆!注意:序列化是在用户端进行的(即在收到我的响应后)。不知何故,我忽略了您答案的最后一部分。[JsonIgnore]就是诀窍:)我只是希望那些不需要的字段不要成为json输出的一部分!我不知道这个有用的标签。它节省了我所有的转换时间。为你竖起大拇指@Matt!这应该不会比像现在这样序列化它们慢。可能更快。嗯。。。。让我试试这个,看看它是否比我的应用程序所能容忍的要耗费更多的时间。那是一堆!注意:序列化是在用户端进行的(即在收到我的响应后)。不知何故,我忽略了您答案的最后一部分。[JsonIgnore]就是诀窍:)我只是希望那些不需要的字段不要成为json输出的一部分!我不知道这个有用的标签。它节省了我所有的转换时间。为你竖起大拇指@Matt!