我有一个表格,其中包含了对相同帖子的几个引用,它们本身包含了对相同语言的几个引用,就像这样:
| 语言学|名称,名称|价值| value |
| --|--|--| ------------ |
| 恩|标题|职位1标题| Post 1 title |
| 恩|身体|这是帖子1的内容| This is the content for the post 1 |
| 前|标题|第1条标题| Titre de l'article 1 |
| 前|身体|第一条内容| Voici le contenu de l'article 1 |
| 恩|标题|职位2标题| Post 2 title |
| 恩|身体|这是帖子2的内容| This is the content for the post 2 |
| 恩|标题|Post 3标题| Post 3 title |
| 恩|身体|这是帖子3的内容| This is the content for the post 3 |
| 前|标题|第3条标题| Titre de l'article 3 |
| 前|身体|第三条内容| Voici le contenu de l'article 3 |
| 德|标题|Titel von Artikel 3| Titel von Artikel 3 |
| 德|身体|Lesen Sie den Inhalt von Artikel 3| Lesen Sie den Inhalt von Artikel 3 |
基于这个表,我想创建一个C#对象,它可以集成到以下内容:
{
"posts":[
{
"1":[
{
"en":{
"title":"Post 1 title",
"body":"This is the content for the post 1"
}
},
{
"fr":{
"title":"Titre de l'article 1",
"body":"Voici le contenu de l'article 1"
}
}
]
},
{
"2":[
{
"en":{
"title":"Post 2 title",
"body":"This is the content for the post 2"
}
}
]
},
{
"3":[
{
"en":{
"title":"Post 3 title",
"body":"This is the content for the post 3"
}
},
{
"fr":{
"title":"Titre de l'article 3",
"body":"Voici le contenu de l'article 3"
}
},
{
"de":{
"title":"Titel von Artikel 3",
"body":"Lesen Sie den Inhalt von Artikel 3"
}
}
]
}
]
}
字符串
如何在C#中实现这一点?
在从SQL数据库中选择数据后,我循环遍历每一行,试图将其添加到字符串Dictionary<string, Dictionary<string, Dictionary<string, string>>>
的字典中,测试该键是否存在于字典中。如果它存在,我只是赋值。如果没有,我添加键,然后赋值,如下所示:
Dictionary<string, Dictionary<string, Dictionary<string, string>>> postsDictionnary= new();
foreach(var post in postsList)
{
if (postsDictionnary.ContainsKey(post.postId))
{
if (postsDictionnary[post.postId].ContainsKey(post.language))
{
if (postsDictionnary[post.itemId][post.language].ContainsKey(post.name))
{
postsDictionnary[post.itemId][post.language][post.name] = post.value;
}
else
{
postsDictionnary[post.postId][post.language].Add(post.name, post.value);
}
}
else
{
postsDictionnary[post.postId].Add(post.language, new Dictionary<string, string>());
postsDictionnary[post.postId][post.language].Add(post.name, post.value);
}
}
else
{
postsDictionnary.Add(post.postId, new Dictionary<string, Dictionary<string, string>>());
postsDictionnary[post.postId].Add(post.language, new Dictionary<string, string>());
postsDictionnary[post.postId][post.language].Add(post.name, post.value);
}
}
型postsDictionnary
组织得很好,但是**有没有更好的方法来实现这一点?**创建字符串的字典的字典。
5条答案
按热度按时间g2ieeal71#
假设您有下面的类和这些对象的列表
字符串
然后你可以编写以下LINQ查询:
型
au9on6nz2#
我想你需要把这个
DataTable
转换成JSON。为此,您可以使用.NET中的Newtonsoft Json
库并将数据序列化为有效的JSON。大概是这样的:
字符串
更多信息Newtonsoft Json
ctrmrzij3#
为什么不创建一个表示该对象类呢?
下面是一个可以用于您示例的类:
字符串
要将SQL查询的结果转换为该类的示例,可以使用ORM。对于这个例子,你可能想使用一个微型ORM,比如dapper,他会看到这个链接https://www.learndapper.com/dapper-query/selecting-multiple-rows
型
一些可以使用LINQ执行的查询示例:
型
请记住,根据您的用例,您可能希望在此数据结构之上使用其他数据结构,以提高性能,可用性,搜索等。
sirbozc54#
您可以创建一个对象模型,由包含不同语言内容的帖子组成。
字符串
范例:
型
一个帖子包含一个内容字典,其中语言被用作关键词。这允许您向帖子添加不同的本地化内容。
在DB中,您将有两个表:
型
语言也可以是包含支持的语言沿着完整语言名称的语言表中的外键。
cngwdvgl5#
对于喜欢C#严格代码的人
字符串
输出量
型