如何修复多余的循环运行?

时间:2019-02-19 13:16:58

标签: c# .net

我创建了一个对象,其中有3行的值,我需要遍历3行并添加该对象的值(rowsCmd)。

private void CalculateDist()
{
    var Unique= Cursor.GetFieldValue<int>("Unique");
    var document = new HeadersRepository().Get(Unique);
    if (document == null)
    {
        return;
    }
    var rowsRepository = new RowsRepository(document);
    var rowList = rowsRepository.GetRows();

    var cmd = SqlClient.Main.CreateCommand(string.Format(
        @"select DOC.Unique, DOC.Number from DOC where DOC.Unique =@Unique order by DOC.Number"), new { Unique });

    var rowsCmd = cmd.ExecObjects(new
    {
        Unique= 0,
        Number= 0,
    });


    foreach (var row in rowList)
    {
        foreach (var rowCmd in rowsCmd)
        {
            row.Number = rowCmd.Number;
            row.Number= rowCmd.Number;
        }
    }
}

如果我有2行,则此代码将执行4次,但只需要2次。如何创建一个循环,该循环将遍历我的列表rowList中的每一行,并将来自对象rowCmd的数据放入1个循环中

1 个答案:

答案 0 :(得分:2)

您的代码始终使用rowCmd列表的最后一个元素设置行值。因此,这是错误的代码段。

出于您的目的,您可以使用for循环而不是foreach循环。

for(int i=0; i< rowList.Count; i++){
   rowList[i].Number = rowsCmd[i].Number;
}