Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在插入显示数据后检查ID是否存在的方法_C# - Fatal编程技术网

C#在插入显示数据后检查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

我正在尝试创建一个CRUD菜单,它允许我在数组中插入数据并按id进行搜索

然而,我试图创建一个方法,允许检查id是否存在,并在检查后显示输出

问题是该方法不够正确,我无法在其他方法中显示它,也无法在switch语句中显示它。问题是它在第行重复两次您要检查的Id是什么

代码如下:

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
        ...
    }