Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将DataTable的列转换为列表_C#_.net_List_Datatable - Fatal编程技术网

C# 如何将DataTable的列转换为列表

C# 如何将DataTable的列转换为列表,c#,.net,list,datatable,C#,.net,List,Datatable,我有一个多列的数据表。我想从DataTable的第一列中获取一个列表。我如何才能做到这一点?var list=dataTable.Rows.OfType() var list = dataTable.Rows.OfType<DataRow>() .Select(dr => dr.Field<string>(columnName)).ToList(); .Select(dr=>dr.Field(columnName)).ToList(); [编辑:如果未编

我有一个多列的数据表。我想从DataTable的第一列中获取一个
列表。我如何才能做到这一点?

var list=dataTable.Rows.OfType()
var list = dataTable.Rows.OfType<DataRow>()
    .Select(dr => dr.Field<string>(columnName)).ToList();
.Select(dr=>dr.Field(columnName)).ToList();
[编辑:如果未编译,请在项目中添加对
System.Data.DataSetExtensions的引用]

           DataTable defaultDataTable = defaultDataSet.Tables[0];
           var list = (from x in defaultDataTable.AsEnumerable()
                    where x.Field<string>("column1") == something
                    select x.Field<string>("column2")).ToList();
DataTableDefaultDataTable=defaultDataSet.Tables[0];
var list=(来自defaultDataTable.AsEnumerable()中的x)
其中x.Field(“column1”)==某物
选择x.Field(“column2”).ToList();
如果你需要第一列

           var list = (from x in defaultDataTable.AsEnumerable()
                    where x.Field<string>(1) == something
                    select x.Field<string>(1)).ToList();
var list=(来自defaultDataTable.AsEnumerable()中的x)
其中x.Field(1)=某物
选择x.Field(1)).ToList();
这就是你需要的吗

DataTable myDataTable = new DataTable();
List<int> myList = new List<int>();
foreach (DataRow row in myDataTable.Rows)
{
    myList.Add((int)row[0]);
}
DataTable myDataTable=newdatatable();
List myList=新列表();
foreach(myDataTable.Rows中的DataRow行)
{
myList.Add((int)行[0]);
}
试试这个:

static void Main(string[] args)
{
    var dt = new DataTable
    {
        Columns = { { "Lastname",typeof(string) }, { "Firstname",typeof(string) } }
    };
    dt.Rows.Add("Lennon", "John");
    dt.Rows.Add("McCartney", "Paul");
    dt.Rows.Add("Harrison", "George");
    dt.Rows.Add("Starr", "Ringo");

    List<string> s = dt.AsEnumerable().Select(x => x[0].ToString()).ToList();

    foreach(string e in s)
        Console.WriteLine(e);

    Console.ReadLine();
}
static void Main(字符串[]args)
{
var dt=新数据表
{
列={{“Lastname”,typeof(string)},{“Firstname”,typeof(string)}
};
添加(“列侬”、“约翰”);
添加(“麦卡特尼”、“保罗”);
添加(“哈里森”、“乔治”);
添加(“Starr”、“Ringo”);
列表s=dt.AsEnumerable().Select(x=>x[0].ToString()).ToList();
foreach(s中的字符串e)
控制台写入线(e);
Console.ReadLine();
}

我为您制作了一个示例,希望这对您有所帮助

    static void Main(string[] args)
    {
        var cols = new string[] { "col1", "col2", "col3", "col4", "col5" };

        DataTable table = new DataTable();
        foreach (var col in cols)
            table.Columns.Add(col);

        table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
        table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
        table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
        table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });
        table.Rows.Add(new object[] { "1", "2", "3", "4", "5" });

        foreach (var col in cols)
        {
            var results = from p in table.AsEnumerable()
                          select p[col];

            Console.WriteLine("*************************");
            foreach (var result in results)
            {
                Console.WriteLine(result);
            }
        }


        Console.ReadLine();
    }

我的做法如下所示,在您将列设置为numarable之后,您可以进行排序、排序或按照您的意愿进行排序

 _dataTable.AsEnumerable().Select(p => p.Field<string>("ColumnName")).ToList();
\u dataTable.AsEnumerable().Select(p=>p.Field(“ColumnName”).ToList();

1.迭代datatable并获取列表中的列的非常简单的代码

2.code==>>>

 foreach (DataColumn dataColumn in dataTable.Columns)
 {
    var list = dataTable.Rows.OfType<DataRow>()
     .Select(dataRow => dataRow.Field<string> 
       (dataColumn.ToString())).ToList();
 }
foreach(dataTable.Columns中的DataColumn-DataColumn)
{
var list=dataTable.Rows.OfType()
.Select(dataRow=>dataRow.Field
(dataColumn.ToString()).ToList();
}

AsEnumerable()也适用于数据表。var list=dataTable.AsEnumerable().Select(r=>r.Field(columnName)).ToList();如果
DataTable.AsEnumerable()
未编译,请在项目中添加对System.Data.DataSetExtensions的引用。如果您不知道
columnName
,该怎么办?我将选择AsEnumerable()方法而不是此方法。这就像用左手握住右耳。还有人在列上出现只读错误吗?如何从列“名称”中检索数据?@JerryGoyal回复得很晚,但如果有人想用
x[“Lastname”]
替换
x[0]
。Lastname是我们感兴趣的列的名称。您的回答几乎正确,但问题是询问名称或
List
可能需要提及此“简单”代码需要.Net 4.5或更高版本,以及必须通过“install package System.Data.DataSetExtensions-Version 4.5.0”安装的nuget软件包