在C#中使用IEnumerable和foreach循环

时间:2017-06-14 16:18:48

标签: c# foreach ienumerator

我正在编写一个C#应用程序,它将数据从远程数据库同步到我的MySQL Web应用程序,并且需要有关如何更好地完成此操作的建议。

在我的C#应用​​程序中,我建立了与远程MySQL数据库的连接,并将该连接传递给一个运行循环的函数,以便将每次迭代中的一个查询列表传递给另一个执行每个查询的函数。它的编写方式很有用,但是使用foreach循环和IEnumerable函数似乎会产生反作用。我不确定它现在的编写方式是否有意义,我想知道我是否可以在没有foreach循环的情况下编写它,同时保留IEnumerable函数,如果可能的话。

IEnumerator

编辑:在UpdateQueries函数中添加了4行,描述了在此函数中使用MySQL连接。

2 个答案:

答案 0 :(得分:1)

_queries本身是可枚举的(因为它是List<string> which implements IEnumerable<string>,因此您可以将其重写为:

private void UpdateRecords(MySqlConnection connection) 
{
    foreach (string query in _queries) 
    {
        // process query
    }
}

答案 1 :(得分:0)

我不确定您使用Enumerator的原因。您可以foreach List

private IEnumerable<string> UpdateQueries(MySqlConnection connection, List<string> queries) { foreach (var query in queries) { MySqlCommand command = new MySqlCommand(); command.Connection = connection; command.CommandText = query; command.ExecuteNonQuery(); yield return query; } }
    {
    "Recife": {
        "coordenadas": {
            "upperLeft": {
                "x": 0,
                "y": 1000
            },
            "bottomRight": {
                "x": 600,
                "y": 500
            }
        }
    }
}

{
    "Cuiaba": {
        "coordenadas": {
            "upperLeft": {
                "x": 0,
                "y": 1000
            },
            "bottomRight": {
                "x": 600,
                "y": 500
            }
        }
    }
}

{
    "Santos": {
        "coordenadas": {
            "upperLeft": {
                "x": 0,
                "y": 1000
            },
            "bottomRight": {
                "x": 600,
                "y": 500
            }
        }
    }
}