C# 使用linq更新序列元素,而不使用linq对序列进行迭代

C# 使用linq更新序列元素,而不使用linq对序列进行迭代,c#,linq-to-sql,C#,Linq To Sql,我有一个如下的查询,我想更新序列的所有元素。但不使用foreach/for var res = _context.tbl1.Where(/* Conditions here */); res.//Using a method to performing changes; 您正在寻找Select?您可以为IEnumerable编写一个扩展方法,该方法可以迭代并执行所需的操作,可能会使用委托或Func使其更通用。如果您询问是否可以像在sql中一样在linq到sql中进行基于集合的更新,恐怕您不能。

我有一个如下的查询,我想更新序列的所有元素。但不使用foreach/for

var res = _context.tbl1.Where(/* Conditions here */);
res.//Using a method to performing changes;

您正在寻找
Select

您可以为
IEnumerable
编写一个扩展方法,该方法可以迭代并执行所需的操作,可能会使用委托或Func使其更通用。

如果您询问是否可以像在sql中一样在linq到sql中进行基于集合的更新,恐怕您不能。完成后,您必须单独更新每个l2s对象并调用
SubmitChanges()
,或者使用sql查询调用
ExecuteCommand()

这是一条你可能感兴趣的线索-

编辑:事实上,您可能会感兴趣-


如果你看一下,这里有一个链接,看起来有点酷。可能得亲自去看看

为它编写一个扩展方法

public static class IEnumerableExtensions
{
    public static void ForEach<T>(this IEnumerable<T> seq, Action<T> action)
    {
        foreach (var item in seq)
        {
            action(item);
        }
    }
}
公共静态类IEnumerableExtensions
{
公共静态void ForEach(此IEnumerable seq,Action)
{
foreach(序列中的var项目)
{
行动(项目);
}
}
}

但是请注意,在引擎盖下,您仍然在循环-就像Where扩展方法和所有其他方法一样。扩展方法隐藏了循环。

如果不遍历每个元素,您认为这将如何工作?嗯。。。我认为应该存在一个扩展方法来实现这一点,否则为什么我们可以使用Where迭代每个元素?在这种情况下,请参见Frank的答案。默认情况下,LINQ只能用于选择数据,不能更新数据。谢谢,所以我不能这样做,也感谢提供的链接。我得到了答案