更新通用列表

时间:2014-03-12 01:19:33

标签: c#

该列表包含多个值,我试图找出如何更新将从对象参数中进入的所选项目。有人可以告诉我如何做到这一点。

- 更新方法 -

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

2 个答案:

答案 0 :(得分:0)

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

试试这个

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;

}

答案 1 :(得分:0)

可能你正在寻找类似的东西

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。