我有这堂课:
public class Test
{
public string Id { get; set; }
public int Number { get; set; }
public int DoubleNumber { get; set; }
}
和一个清单
List<Test> myTestList;
如何使myTestList
中字段DoubleNumber的值等于Number的值的两倍?请注意,如果需要,我可以创建另一个列表。
答案 0 :(得分:0)
可以使用foreach
语句的一种方式:
foreach(var item in myTestList)
{
item.DoubleNumber = 2*item.Number;
}
使用LINQ的另一种方式。
var result = myTestList.Select(test => new Test
{
test.Id,
test.Number,
DoubleNumber = 2*test.Number;
})
.ToList();
在这两种方式中我更喜欢第一种方式,因为它更清楚你要做什么和更高效(在第二种方法中你必须为myTestList
中的每个对象创建一个新对象)。
答案 1 :(得分:0)
如果我理解你的问题:
foreach(Test item in myList) {
item.DoubleNumber = 2*item.Number;
}
或者,如果没问题,只需删除setter并修改getter即可返回2x Number
:
public class Test
{
public string Id { get; set; }
public int Number { get; set; }
public int DoubleNumber { get { return 2* this.Number; } } //completely remove setter
}
或者,如果您仍希望能够修改DoubleNumber
:
public class Test {
private int m_num;
private int m_doubleNum;
public string Id {
get;
set;
}
public int Number {
get {
return this.m_num;
}
set {
this.m_num = value;
this.m_doubleNum = 2 * value; //when Number is set, update m_doubleNum too
}
}
public int DoubleNumber {
get {
return this.m_doubleNum;
}
set {
this.m_doubleNum = value; //allow manual setting of DoubleNumber
//or maybe also modify Number here?
//this.m_num = value / 2;
}
}
}