C#在插入显示数据后检查ID是否存在的方法
我正在尝试创建一个CRUD菜单,它允许我在数组中插入数据并按id进行搜索 然而,我试图创建一个方法,允许检查id是否存在,并在检查后显示输出 问题是该方法不够正确,我无法在其他方法中显示它,也无法在switch语句中显示它。问题是它在第行重复两次您要检查的Id是什么 代码如下:C#在插入显示数据后检查ID是否存在的方法,c#,C#,我正在尝试创建一个CRUD菜单,它允许我在数组中插入数据并按id进行搜索 然而,我试图创建一个方法,允许检查id是否存在,并在检查后显示输出 问题是该方法不够正确,我无法在其他方法中显示它,也无法在switch语句中显示它。问题是它在第行重复两次您要检查的Id是什么 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.T
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace menu
{
class Program
{
private static int id = 1;
enum dataInsert { ID, NAME, SURNAME, ADDRES };
static void Main(string[] args)
{
string[,] matrix = new string[10, 4];
insertData(matrix);
searchId(matrix);
visualizeByid(matrix);
}
static int generateId()
{
return id++;
}
static void insertData(string[,] matrix)
{
int n = generateId();
for (int j = 1; j < matrix.GetLength(1); j++)
{
matrix[n - 1, 0] = Convert.ToString(n);
Console.Write($"Insert {Enum.GetName(typeof(dataInsert), j)}: ");
matrix[n - 1, j] = Console.ReadLine();
}
}
static int searchId(string[,] matrix)
{
int choosenId, index = -1;
do
{
Console.Write("Insert Id to visualize: ");
} while (!int.TryParse(Console.ReadLine(), out choosenId));
for (int i = 0; i < matrix.GetLength(0); i++)
{
if (Convert.ToString(choosenId) == matrix[i, 0])
{
index = i;
}
}
return index;
}
static void visualizeByid(string[,] matrix)
{
int pos = searchId(matrix);
for (int i = pos; i < pos + 1; i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
Console.Write($"{matrix[i, j]}\t");
}
Console.WriteLine();
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间菜单
{
班级计划
{
私有静态int id=1;
枚举数据插入{ID,姓名,姓氏,地址};
静态void Main(字符串[]参数)
{
字符串[,]矩阵=新字符串[10,4];
插入数据(矩阵);
搜索ID(矩阵);
可视化byid(矩阵);
}
静态int generateId()
{
返回id++;
}
静态void insertData(字符串[,]矩阵)
{
int n=generateId();
对于(int j=1;j
除非我有误解,否则看起来您有一个对象数组。即使这些只是一个名字和id
public class Obj
{
public int Id { get; set; }
public string Name { get; set; }
}
然后就有了一个数组,不过也可以使用列表
List<Obj> Objects = new List<Obj>();
显示两次“Insert Id to visualize:”的原因是,您的程序连续两次调用静态int-searchId(字符串[,]矩阵)
:
在Main中
static void Main(string[] args)
{
string[,] matrix = new string[10, 4];
insertData(matrix);
searchId(matrix); //Here
visualizeByid(matrix); //Called immediately after
}
和visualizeByid
static void visualizeByid(string[,] matrix)
{
int pos = searchId(matrix); //Here
...
}
通过从
Main
中删除对searchId的调用,您应该能够获得预期的结果。我建议您使用字典,这样您就不能添加两次ID了。如果您尝试,您将得到一个错误,您可以捕获并返回给用户。或者使用LinQ检查数组是否包含要添加的项。您可以开始删除VisualizationById中对searchId的调用,而将调用searchId中的返回值传递给main方法。然而,这段代码不允许在matrixLol中插入多个元素,你描述的方式让我觉得你和我在做完全相同的赋值
static void visualizeByid(string[,] matrix)
{
int pos = searchId(matrix); //Here
...
}