首页 > 解决方案 > 无法在数组中搜索最大值

问题描述

我的问题是我无法使用 linq 搜索数组以查找对象属性并将其设置为 id。

我需要在数组中搜索 othermodel.idCliente并将该值设置为“nextid + 1”的方法,以便将其用作 id 和下一个数组索引。

由于数组是空的,程序正确地添加了新对象,但是当输入 else if 情况时,我得到一个“a as null”的异常。

这是我的代码(如果 linq 行说“a”为空,我在 else 上得到一个异常):

        //Arrays

    ClienteModel[] MemoryClienti = new ClienteModel[19];
    OrdineModel[] MemoryOrdini = new OrdineModel[19];

    //Aggiungi

    public bool CreateCliente(ClienteModel model)
    {
            if (MemoryClienti[0] == null)
            { 
                int defaultID = 0;
                int defaultIndex = 0;
                model.IDCliente = defaultID;
                MemoryClienti[defaultIndex] = model;
            }
            else if (MemoryClienti[0]!=null)
            {
                var maxID = MemoryClienti.Max(a => a.IDCliente);
                model.IDCliente = maxID++;
                MemoryClienti[maxID++] = model;
            }
            return true;
    }

这是表单点击的代码:

        //Aggiungi Cliente
    private void aggiungiClienteButton_Click(object sender, EventArgs e)
    {
        clienteModel.Cognome = cognomeTextBox.Text;
        clienteModel.Nome = nomeTextBox.Text;
        clienteModel.Indirizzo = indirizzoTextbox.Text;
        dbMemoryManager.CreateCliente(clienteModel);
        MessageBox.Show("Cliente aggiunto correttamente.");
        cognomeTextBox.Text = String.Empty;
        nomeTextBox.Text = String.Empty;
        indirizzoTextbox.Text = String.Empty;
    }

这是ClienteModel课程:

    public class ClienteModel
{
    public int IDCliente { get; set; }
    public string Cognome { get; set; }
    public string Nome { get; set; }
    public string Indirizzo { get; set; }

}

标签: c#arraysalgorithmclassmethods

解决方案


以下代码不会实现您想要做的事情吗?

ClienteModel[] MemoryClienti = new ClienteModel[19];
OrdineModel[] MemoryOrdini = new OrdineModel[19];
int maxID = 0; /* 0 is not a valid ID. IDs start from 1 */


//Aggiungi
public bool CreateCliente(ClienteModel model)
{
    if(maxID <= MemoryClienti.Length) {
      MemoryClienti[maxID++] = model;    // copy the reference
      model.IDCliente = maxID;           // update the object's ID
      return true;
    } else {
      return false;                      // can't add. array is full
    }
}

如果您还要进行删除,最好使用其他人也建议的列表。


推荐阅读