Вы можете легко создать текст следующим образом:
var query = $"INSERT INTO {tableName}({string.Join(",", cols.Select(x=>x.Name))})";
Однако, если для целей обучения , вы собираетесь обрабатывать случай, используя обобщенный метод c, вы можете создайте обобщенную c функцию, подобную следующей, а затем легко используйте for
l oop и удалите дополнительный разделитель, используя TrimEnd
, или как лучший вариант, например, String.Join
реализацию. NET Framework получить перечислитель так:
string Join<TItem>(
IEnumerable<TItem> items, Func<TItem, string> itemTextSelecor, string separator)
{
var en = items.GetEnumerator();
if (!en.MoveNext())
return String.Empty;
var builder = new StringBuilder();
if (en.Current != null)
builder.Append(itemTextSelecor(en.Current));
while (en.MoveNext())
{
builder.Append(separator);
if (en.Current != null)
builder.Append(itemTextSelecor(en.Current));
}
return builder.ToString();
}
И использовать его так:
var tableName = "customers";
var cols = new[]
{
new { Name = "surname"},
new { Name = "firstname"},
new { Name = "dateOfBirth"}
};
var InsertStatement = $"INSERT INTO {tableName} ({Join(cols, col => col.Name, ", ")})"
+ $"VALUES({Join(cols, col => $"@{col.Name}", ", ")})";