c# - 为什么使用 string.Join 时空值会自动转换为空字符串?
问题描述
我有一个包含空值的 JArray。当我在做的时候string.Join
,null
价值观正在被转换成empty string
.
原始数组值:
[
null,
null,
"America/Boise",
false,
"2021-02-04T06:51:33.9686227Z"
]
字符串连接:
var val = $"('{string.Join("','", valuesArray)}')";
当前结果:
"('','','America/Boise','False','2/4/2021 6:51:33 AM')"
预期结果:
"(null,null,'America/Boise',False,'2/4/2021 6:51:33 AM')"
制作示例: https ://dotnetfiddle.net/5nRTyL
如何使用 获得预期结果string.Join
?
解决方案
null
a 中的值与 a ofJArray
一样存储。因此,您需要检查这一点并将它们转换为 string 。其次,由于您只想引用某些值,因此在加入它们时不应将引号放在分隔值中,而应仅根据其类型引用需要它的值。JTokens
JTokenType
Null
"null"
定义以下辅助函数:
string TokenToString(JToken token)
{
switch (token.Type)
{
case JTokenType.Null:
return "null";
case JTokenType.Date:
case JTokenType.String:
return $"'{token}'";
default:
return token.ToString();
}
}
然后你可以像这样得到你想要的结果:
string val = $"({string.Join(",", valuesArray.Select(v => TokenToString(v)))})";
在这里工作演示:https ://dotnetfiddle.net/Q62Uck
推荐阅读
- javascript - 如何在 django 中渲染 .astro 文件
- augmented-reality - 在 ARKit 中,我可以选择任何现实世界的对象来绑定虚拟对象,使用深度图或其他技术吗?
- html - 如何使用 css 更改文本框大小?以及如何将我的 css 文件与我的 html 文件连接起来
- c# - 使用 RichTextBox 中的索引突出显示阿拉伯语单词?
- html - 将自定义 svg 列表项项目符号与文本垂直对齐
- android - android studio 4.2 的缓存文件夹在哪里
- python - 如何使用 matplotlib 和底图绘制州名和人口密度?
- flutter - 如何执行未来的单次执行?
- azure - 应用程序洞察不记录请求、页面浏览量、自定义事件
- javascript - Twilio.js:264 Uncaught TypeError: url.URL 不是构造函数