更新通用列表

本文关键字:列表 更新 | 更新日期: 2023-09-27 17:49:41

列表包含多个值,我正试图找出如何更新将从对象参数进入的选定项目。谁能告诉我怎么做这个?

——更新方法——

public void updateSelectedItemGrid(object Parameter)
{
    if (Parameter != null)
    {
        string test1 = ((Test.SharedLib.Data.testSubBO)(Parameter)).Term;
        Int64 test2 = Convert.ToInt64(((testSubBO)(Parameter)).ComputerId);
        ComputerDataGridListTest.Add(new ComputerDataGridBO()
        {
           //Not sure what to do here??
            Term = test1,
            ComputerId = test2
        });
    }
}

——ComputerDataGridBO

class ComputerDataGridBO
{
    public Int64 ComputerId { get; set; }
    public string Term { get; set; }
}

——列表

public List<ComputerDataGridBO> ComputerDataGridListTest { get; set; }

更新通用列表

可能你正在寻找这样的东西

var existsItems = ComputerDataGridListTest.Where(x => x.ComputerId == test2);
if(existsItems.Any())
    foreach(var item in existsItems)
        item.Term = test2;
else
    ComputerDataGridListTest.Add(new ComputerDataGridBO()
    {
        Term = test1,
        ComputerId = test2
    });

别忘了使用System.Linq.

在您的代码中,您只是向List添加另一个条目,而不是更新现有条目。

试试这个

public void updateSelectedItemGrid(object Parameter)
{
    if (Parameter == null) return;
    var parameter = Parameter as Test.SharedLib.Data.testSubBO;
    if (parameter == null) return;
    var computerid = Convert.ToInt64(parameter.ComputerId);
    var item = ComputerDataGridListTest.FirstOrDefault(x => x.ComputerId == computerid);
    if(item != null)
        item.Term = paramter.Term;
}

如果您更改签名以接受正确的对象,可能会容易得多!

public void updateSelectedItemGrid(Test.SharedLib.Data.testSubBO parameter)
{
    if (parameter == null) return;
    var item = ComputerDataGridListTest.FirstOrDefault(x => x.ComputerId == parameter.computerid);
    if(item != null)
        item.Term = paramter.Term;
}