该列表包含多个值,我试图找出如何更新将从对象参数中进入的所选项目。有人可以告诉我如何做到这一点。
- 更新方法 -
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; }
答案 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。