gpt4 book ai didi

c# - 在 C# 中将 EF 对象作为普通数组返回

转载 作者:太空宇宙 更新时间:2023-11-03 23:13:17 24 4
gpt4 key购买 nike

在用数据填充一个 EF 对象(例如 users)并从 WebAPI 返回它之后,我得到它的 json 格式如下:

[
{"username":"lakshman553","email":"abc@xyz.com","phone":1234567},
{"username":"lakshman323","email":"pqr@xyz.com","phone":"122267"},
]

由于我将 webapi 完全用于内部目的,所以我希望数据如下:

[
["lakshman553","abc@xyz.com",1234567],
["lakshman323","pqr@xyz.com",1222267]
]

当数据很高时,我可以通过这种方式大幅减少有效负载,这通常是这种情况。

如何在 C# 中实现这一点。遍历 users 对象并将其分配给一定大小的行数和列数数组是我知道的一种方法,但是是否有直接的方法来执行此操作?

谢谢。

最佳答案

您可以使用 LINQ 扩展方法实现此转换,如下所示:

// Project each list item into an array of item property values
var array4all = list.Select
(
item => item.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)
.Select(property => property.GetValue(item))
.ToArray()
).ToArray();

顺便说一句,恕我直言,我很关心这句话:

Since i use the webapi completely for internal purposes [...]

我相信您正在尝试简化问题,从而产生新问题。在编码、可读性和可维护性方面,我发现你让事情变得更难了。

也许类似于将属性名称混淆为 abc...,您可能会使用 AutoMapper映射 dynamic DTO to your actual model/DTO with full property names .像这样的东西:

{ "a": "hello world", "b": 20 } => { "text": "hello world", "number": 20 }

或者你可以看看MsgPack , BSON ...

关于c# - 在 C# 中将 EF 对象作为普通数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com