10 методов заполнения набора данных списком на C#

При работе с наборами данных в C# доступны различные методы заполнения набора данных списком данных. В этой статье мы рассмотрим десять различных подходов вместе с примерами кода, чтобы продемонстрировать, как эффективно выполнить эту задачу.

Метод 1: использование цикла for

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
foreach (var item in dataList)
{
    DataRow row = dataTable.NewRow();
    row["ColumnName"] = item;
    dataTable.Rows.Add(row);
}

Метод 2: использование цикла ForEach

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
dataList.ForEach(item =>
{
    DataRow row = dataTable.NewRow();
    row["ColumnName"] = item;
    dataTable.Rows.Add(row);
});

Метод 3: использование LINQ

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
var rows = dataList.Select(item =>
{
    DataRow row = dataTable.NewRow();
    row["ColumnName"] = item;
    return row;
}).ToList();
rows.ForEach(row => dataTable.Rows.Add(row));

Метод 4. Использование адаптера данных

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
using (var adapter = new SqlDataAdapter())
{
    adapter.Fill(dataTable);
}
foreach (var item in dataList)
{
    DataRow row = dataTable.NewRow();
    row["ColumnName"] = item;
    dataTable.Rows.Add(row);
}

Метод 5: использование метода AddRange

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
var rows = dataList.Select(item =>
{
    DataRow row = dataTable.NewRow();
    row["ColumnName"] = item;
    return row;
}).ToArray();
dataTable.Rows.AddRange(rows);

Метод 6: использование привязки данных

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
dataTable.Columns.Add("ColumnName", typeof(string));
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = dataList;
dataTable = bindingSource.DataSource as DataTable;

Метод 7: использование массового копирования

DataSet dataSet = new DataSet();
DataTable dataTable = new DataTable();
dataSet.Tables.Add(dataTable);
List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (var bulkCopy = new SqlBulkCopy(connection))
    {
        bulkCopy.DestinationTableName = "YourTableName";
        var table = new DataTable();
        table.Columns.Add("ColumnName", typeof(string));
        dataList.ForEach(item => table.Rows.Add(item));
        bulkCopy.WriteToServer(table);
    }
}

Метод 8: использование Entity Framework

var dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
using (var dbContext = new YourDbContext())
{
    foreach (var item in dataList)
    {
        dbContext.YourTableName.Add(new YourEntity { ColumnName = item });
    }
    dbContext.SaveChanges();
}

Метод 9: использование Dapper

var dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    connection.Execute("INSERT INTO YourTableName (ColumnName) VALUES (@ColumnName)",
        dataList.Select(item => new { ColumnName = item }));
}

Метод 10: использование команды ADO.NET

using (var connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (var command = new SqlCommand())
    {
        command.Connection = connection;
        command.CommandText = "INSERT INTO YourTableName (ColumnName) VALUES (@ColumnName)";
        command.Parameters.Add("@ColumnName", SqlDbType.VarChar);
        List<string> dataList = new List<string>() { "Data 1", "Data 2", "Data 3" };
        foreach (var item in dataList)
        {
            command.Parameters["@ColumnName"].Value = item;
            command.ExecuteNonQuery();
        }
    }
}

В этой статье мы рассмотрели десять различных методов заполнения набора данных списком на C#. Каждый метод обеспечивает уникальный подход к решению задачи, что позволяет вам выбрать тот, который лучше всего соответствует вашим требованиям. Используя эти методы, вы можете эффективно заполнять наборы данных данными из списков, что позволяет эффективно манипулировать данными в ваших приложениях C#.