C# 如何在c语言中为对象集赋值#
我希望能够在不使用循环的情况下一次性将数据分配给一组值。像这样的C# 如何在c语言中为对象集赋值#,c#,C#,我希望能够在不使用循环的情况下一次性将数据分配给一组值。像这样的 transactions.Where(x => x.sender == agent.realId).AllRows.Amount = 625000; 不做这样的事 var trans = transactions.Where(x => x.sender == agent.realId); foreach(var t in trans) { t.Amount = 625000; } 提前感谢问题是,没有循环
transactions.Where(x => x.sender == agent.realId).AllRows.Amount = 625000;
不做这样的事
var trans = transactions.Where(x => x.sender == agent.realId);
foreach(var t in trans)
{
t.Amount = 625000;
}
提前感谢问题是,没有循环,你真的做不到。如果你的目标是让它看起来更灵巧,你可以做类似的事情:
transactions
.Where(x => x.sender == agent.realId)
.ToList()
.ForEach(x => x.Amount = 625000);
但我个人并不热衷于此
首先,它仍然是一个循环,即使它是一个函数形式
第二,尽管它看起来更像linq,但事实并非如此。Linq操作符都基于函数式编程原理,这意味着不变性。然而,在这里,您希望为Amount
属性分配一个新值,这是一个可变操作,因此不符合函数方法
总之,我的建议是在做函数性工作时使用linq操作符,在做命令性工作时使用循环。很快-在作业中使用循环。问题是,没有循环,你真的做不到。如果你的目标是让它看起来更灵巧,你可以做类似的事情:
transactions
.Where(x => x.sender == agent.realId)
.ToList()
.ForEach(x => x.Amount = 625000);
但我个人并不热衷于此
首先,它仍然是一个循环,即使它是一个函数形式
第二,尽管它看起来更像linq,但事实并非如此。Linq操作符都基于函数式编程原理,这意味着不变性。然而,在这里,您希望为Amount
属性分配一个新值,这是一个可变操作,因此不符合函数方法
总之,我的建议是在做函数性工作时使用linq操作符,在做命令性工作时使用循环。很快-使用循环进行赋值。您可以编写一个扩展方法,允许您对IEnumerable中的每个元素执行操作:
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (T item in source) { action(item); }
}
您可以编写一个扩展方法,允许您对IEnumerable中的每个元素执行操作:
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (T item in source) { action(item); }
}
这有什么问题?数据的来源是什么(即
事务
来自哪里)?有什么问题?数据的来源是什么(即事务
来自哪里)?而且,这实际上有两个循环,一个用于ToList,另一个用于ForEach。还有内存分配,因为ToList。而且,这实际上有两个循环,一个用于ToList,另一个用于ForEach。由于ToList的原因,还有内存分配。还有这个扩展。还有这个扩展。