如何将数组添加到锯齿状数组中的数组中
How to add an array into an array within a jagged array
我正在尝试创建一个个人计算机程序,它可以让我快速将食谱添加到数据库中,并且可以轻松地按类别查看。我对信息的基本设置是有一个锯齿状的类别数组,每个类别都有一个食谱数组。我已经搜索了一个解决方案,但没有找到任何似乎可以满足我的特定需求的东西。下面基本上是我的数据结构。
//Full List
string[][][][][] arrA = {
//List Category
string[][][][] arrB = {
//Single Entry
string[][][] arrC = {
//Entry Subsection
string[][] arrD = {
//Entry Value
string[] arrE = {
"foo", "bar"
},
//Entry Value
string[] arrF = {
"bar", "foo"
}
}
}
//Add Array here
}
//List Category
string[][][][] arrB = {
//Single Entry
//Etc...
}
}
实际上,要在上面显示的数组中添加的内容 Add Array Here
//Array to add (Entry in Category)
string[][][][] arrV = {
string[][][] arrW = {
string[][] arrX = {
string[] arrY = {
"rab", "oof"
},
string[] arrZ = {
"oof", "rab"
}
}
}
}
如果无法使用数组执行此操作,我愿意放入一个转换器代码,只要它可以转换回数组,因为我的显示代码是为处理这种锯齿状数组结构而编写的.
针对您的问题
看来嵌套List
可以解决。类似于:
var entireList = new List<List<List<List<List<string>>>>>();
var allCategories = new List<List<List<List<string>>>>();
and so on...
那你可以
entireList.Add(allCategories);
and so on...
我假设每个 List
的第一个元素命名了列表。例如,对于 Categories
的列表,第一个元素将命名以下元素所属的实际类别。
求解答
你打算如何在数据库中存储这个列表?
我建议您首先创建 tables 和数据库模式设计。即 A table 用于类别等。然后使用像 EnityFramework 这样的 ORM 连接到数据库,然后根据需要访问每个实体。
这样做应该会让您重温以您当前的方式表示数据的痛苦。
根据您定义的问题,我看不出您选择这么多嵌套和多维数组的原因。肯定是得不偿失。
我建议使用从类别到该类别中食谱数组的映射。
class Recipe
{
public string name { get; set; }
public List<string> ingredients { get; set; }
// ... other things the class needs
}
class MyCookbook
{
public Dictionary<string, List<Recipe>> categories = new Dictionary();
// Creating a single recipe and giving it ingredients
var penne = new Recipe();
penne.name = "Penne";
penne.ingredients = new List<string>();
penne.ingredients.add("Tomato Sauce");
// ... add other ingredients
// Creating a list of recipes we will associate with some category
var typesOfPasta = new List<Recipe>();
typesOfPasta.add(penne);
// Putting that list of recipes into a category, this time "Pasta"
categories.add("Pasta", typesOfPasta);
}
这是一个您可以扩展的基本设置,它允许您有一个字符串(比如 "pasta")指向 Recipe 对象数组(比如 "lasagna"、"spaghetti and meatballs", 等等),其中每个 Recipe 对象都包含该食谱的必要成分列表。
int mat [][] = new int [5][];
int [] numbers = new int[5]; //{ v1, v2, v3, v5, v6}; Vn: variable
var arr1 = numbers.ToArray();
mat[0] = arr1; // o.K
mat[0] = numbers; // K.O
我正在尝试创建一个个人计算机程序,它可以让我快速将食谱添加到数据库中,并且可以轻松地按类别查看。我对信息的基本设置是有一个锯齿状的类别数组,每个类别都有一个食谱数组。我已经搜索了一个解决方案,但没有找到任何似乎可以满足我的特定需求的东西。下面基本上是我的数据结构。
//Full List
string[][][][][] arrA = {
//List Category
string[][][][] arrB = {
//Single Entry
string[][][] arrC = {
//Entry Subsection
string[][] arrD = {
//Entry Value
string[] arrE = {
"foo", "bar"
},
//Entry Value
string[] arrF = {
"bar", "foo"
}
}
}
//Add Array here
}
//List Category
string[][][][] arrB = {
//Single Entry
//Etc...
}
}
实际上,要在上面显示的数组中添加的内容 Add Array Here
//Array to add (Entry in Category)
string[][][][] arrV = {
string[][][] arrW = {
string[][] arrX = {
string[] arrY = {
"rab", "oof"
},
string[] arrZ = {
"oof", "rab"
}
}
}
}
如果无法使用数组执行此操作,我愿意放入一个转换器代码,只要它可以转换回数组,因为我的显示代码是为处理这种锯齿状数组结构而编写的.
针对您的问题
看来嵌套List
可以解决。类似于:
var entireList = new List<List<List<List<List<string>>>>>();
var allCategories = new List<List<List<List<string>>>>();
and so on...
那你可以
entireList.Add(allCategories);
and so on...
我假设每个 List
的第一个元素命名了列表。例如,对于 Categories
的列表,第一个元素将命名以下元素所属的实际类别。
求解答
你打算如何在数据库中存储这个列表? 我建议您首先创建 tables 和数据库模式设计。即 A table 用于类别等。然后使用像 EnityFramework 这样的 ORM 连接到数据库,然后根据需要访问每个实体。 这样做应该会让您重温以您当前的方式表示数据的痛苦。
根据您定义的问题,我看不出您选择这么多嵌套和多维数组的原因。肯定是得不偿失。
我建议使用从类别到该类别中食谱数组的映射。
class Recipe
{
public string name { get; set; }
public List<string> ingredients { get; set; }
// ... other things the class needs
}
class MyCookbook
{
public Dictionary<string, List<Recipe>> categories = new Dictionary();
// Creating a single recipe and giving it ingredients
var penne = new Recipe();
penne.name = "Penne";
penne.ingredients = new List<string>();
penne.ingredients.add("Tomato Sauce");
// ... add other ingredients
// Creating a list of recipes we will associate with some category
var typesOfPasta = new List<Recipe>();
typesOfPasta.add(penne);
// Putting that list of recipes into a category, this time "Pasta"
categories.add("Pasta", typesOfPasta);
}
这是一个您可以扩展的基本设置,它允许您有一个字符串(比如 "pasta")指向 Recipe 对象数组(比如 "lasagna"、"spaghetti and meatballs", 等等),其中每个 Recipe 对象都包含该食谱的必要成分列表。
int mat [][] = new int [5][];
int [] numbers = new int[5]; //{ v1, v2, v3, v5, v6}; Vn: variable
var arr1 = numbers.ToArray();
mat[0] = arr1; // o.K
mat[0] = numbers; // K.O