我有一个构建了一些关系的viewmodel。
public class object()
{
public int Id {get; set;}
public string Name {get;set;}
public decimal Amount {get;set;}
}
public class myViewModel()
{
public int Id {get;set;}
public List<object> myObjects {get;set;}
}
我想要做的是在给定对象名称的情况下更改特定myObject元素的数量。
var query = new myViewModel();
假设我已将数据填充到myObjects列表中。
var record = query.myobjects.FirstOrDefault(x => x.Name = "Test");
从此列表中提取正确的元素,但是如何更新列表中的值是我所坚持的。我试过了:
query.myObject.FirstOrDefault(x => x.Name == "Test").Amount = 99;
和
query.myObject.FirstOrDefault(x => x.Name == "Test") == record;
既不起作用。
答案 0 :(得分:1)
这是我在LinqPad中运行的完整代码:
void Main()
{
var query = new myViewModel();
query.myObjects.FirstOrDefault(x => x.Name == "Test").Amount = 99;
query.Dump();
}
// Define other methods and classes here
public class objectX
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Amount { get; set; }
}
public class myViewModel
{
public int Id { get; set; }
public List<objectX> myObjects { get; set; }
public myViewModel()
{
myObjects = new List<UserQuery.objectX>();
myObjects.Add(new objectX { Amount = 100, Id = 1, Name = "ABC" });
myObjects.Add(new objectX { Amount = 200, Id = 2, Name = "Test" });
myObjects.Add(new objectX { Amount = 300, Id = 3, Name = "GHI" });
}
}
输出:
列表(3项) Id |名称|量
1 | ABC | 100
2 |测试| 99
3 | GHI | 300
| | 499
答案 1 :(得分:0)
&#39;你的问题表明你应该去&amp;读一本好的C#书......
基本上你很困惑=和==。你可以做的是创建一个方法并逐步进行,例如
public class myViewModel
{
public int Id {get;set;}
public List<object> myObjects {get;set;}
public bool ChangeAmountByName(string name, decimal amount)
{
var match = this.myobjects.FirstOrDefault(x => x.Name == name);
if (match == null) return false;
match.Amount = amount;
return true;
}
}
这只是几种可能的解决方案之一。但是,分裂和征服&#34;总是很重要,即将你的任务分成几步:这是:首先得到你的匹配记录。确认它在那里;以某种方式反应它失踪了。然后更新你的价值!