什么是linq查询将取代我的两个foreach

什么是linq查询将取代我的两个foreach,linq,Linq,我绞尽脑汁想知道如何替换下面的两个foreach public void UpdateChangedRows(List<Row> changedRows) { // How to write linq to update the rows (example code using foreach) foreach (Row row in table.Rows) { foreach (Row

我绞尽脑汁想知道如何替换下面的两个foreach

        public void UpdateChangedRows(List<Row> changedRows)
    {
        // How to write linq to update the rows (example code using foreach)
        foreach (Row row in table.Rows)
        {
            foreach (Row changedRow in changedRows)
            {
                if (row.RowId==changedRow.RowId)
                {
                    row.Values = changedRow.Values;
                }
            }
        }
    }
我认为有一种linq方法可以执行相同的操作。谢谢你的帮助

Larsi

好吧,LINQ更多的是查询而不是更新,因此我仍然将其分为LINQ查询和foreach循环来进行更新:

var query = from row in table.Rows
            join changedRow in changedRows on row.RowId = changeRow.RowId
            select { row, changedRow };

foreach (var entry in query)
{
    entry.row.Values = entry.changedRow.Values;
}

请注意,这在内存方面效率较低,因为它在内部将所有更改的行加载到字典中,以便它可以根据行ID快速查找更改的行-但这意味着如果每一行只匹配一个更改的行,则循环复杂度在+Om上比在*m上小得多,反之亦然。

+1用于逻辑上分离任务,而不是将所有任务塞进单linq查询。当有人回答一个关于linq的误解的问题时:它应该用于所有事情=