我正在寫一個C#應用程序,它將從遠程數據庫中的數據,以我的MySQL的Web應用程序同步,和我需要建議如何做到這更好的foreach循環。使用的IEnumerable在C#
在我的C#應用程序中,我建立了一個到遠程MySQL數據庫的連接,並將該連接傳遞給一個函數,該函數運行一個循環以將查詢列表(每次迭代一次)傳遞給執行每個查詢的另一個函數。它是書面的方式的偉大工程,但它似乎是反生產力與使用foreach循環和IEnumerable的功能。我不知道如果現在寫的方式是有道理的,我想知道如果我能寫這個沒有foreach循環,同時保持了IEnumerable功能,如果可能的話。
private void UpdateRecords(MySqlConnection connection) {
foreach (string query in UpdateQueries(connection, _queries)) { }
}
private IEnumerable<string> UpdateQueries(MySqlConnection connection, List<string> queries) {
List<string>.Enumerator enumerator = queries.GetEnumerator();
while (enumerator.MoveNext()) {
MySqlCommand command = new MySqlCommand();
command.Connection = connection;
command.CommandText = enumerator.Current;
command.ExecuteNonQuery();
yield return enumerator.Current;
}
}
編輯:添加4行到UpdateQueries函數描述用在這個函數MySQL連接的。
爲什麼你要將連接傳遞給'UpdateQueries'?爲什麼不只是拋棄整個事情而只是做'foreach(var query in _queries){}'? –
我沒有得到'UpdateQueries'的觀點,'UpdateRecords'代碼看起來就像'foreach(在_queries中的字符串查詢){/ * proccess query * /}' – apokryfos
@ChrisPickford我編輯了帖子以顯示爲什麼連接正在傳遞給UpdateQueries函數。 – hRdCoder