更新通用列表
本文关键字:列表 更新 | 更新日期: 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;
}