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
如何在.NET中将数据表转换为列表?_.net_List_.net 3.5_Ado.net_Datatable - Fatal编程技术网

如何在.NET中将数据表转换为列表?

如何在.NET中将数据表转换为列表?,.net,list,.net-3.5,ado.net,datatable,.net,List,.net 3.5,Ado.net,Datatable,我正在开发一个系统,其中DB调用返回一个强类型列表。我需要截取列表,对数据进行更改,然后发送。这是一款时间敏感、高容量、全方位的应用程序;所以我需要一个非常有效的方法来进行转换。由于数据操作的性质,我将列表转换为datatable。转换为DT和操纵一样没有问题;转换回强类型列表是个问题。我必须将其转换回去,因为下游代码需要一个列表。我已经看过了,大多数页面都在讨论如何将列表转换为DataTable,还有一些页面会将DataTable转换为通用列表而不是类型化列表 我尝试了AsEnumerable

我正在开发一个系统,其中DB调用返回一个强类型列表。我需要截取列表,对数据进行更改,然后发送。这是一款时间敏感、高容量、全方位的应用程序;所以我需要一个非常有效的方法来进行转换。由于数据操作的性质,我将列表转换为datatable。转换为DT和操纵一样没有问题;转换回强类型列表是个问题。我必须将其转换回去,因为下游代码需要一个列表。我已经看过了,大多数页面都在讨论如何将列表转换为DataTable,还有一些页面会将DataTable转换为通用列表而不是类型化列表

我尝试了
AsEnumerable()
ToList()
,问题是将其分配回类型列表

逻辑:

List<< TypedlistDef>> Lst = new List<< TypedlistDef>>();
DataTable dt = new DataTable();

dt = Helper.ListToDataTable(Lst)
List>Lst=newlist>();
DataTable dt=新的DataTable();
dt=Helper.ListToDataTable(Lst)
操纵dt

Lst = List<< TypedlistDef>>dt.????????        <---- Problem
Lst=List>dt 如果你愿意,你可以用

  List<SomeType> Lst  = (from r in dataTable.AsEnumerable()
                        select new YourType()
            {
                SomeProperty = r.Field<string>("SomeField"),
                SomeOtherProperty = r.Field<string>("SomeOtherField")
            }).ToList();
List Lst=(来自dataTable.AsEnumerable()中的r)
选择新类型()
{
SomeProperty=r.Field(“SomeField”),
SomeOtherProperty=r.Field(“SomeOtherField”)
}).ToList();
这里有一个完整的例子

class Program
    {
        static void Main(string[] args)
        {

            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            dt.TableName = "source";
            dt.Columns.Add(new DataColumn ("First",typeof (string)));
            dt.Columns.Add(new DataColumn ("Last",typeof (string)));

            ds.Tables.Add(dt);
            dt.Rows.Add("Charles", "Babbage ");
            dt.Rows.Add("Ada", "Lovelace");

            List<YourType>  YourTypeList = (from r in ds.Tables[0].AsEnumerable()
                        select new YourType()
            {
                First = r.Field<string>("First"),
                Last = r.Field<string>("Last")
            }).ToList();

            foreach(YourType yt in YourTypeList)
            {
                Console.WriteLine("{0}, {1}", yt.First, yt.Last);
            }

        }

    }

    class YourType
    { 
        public string First {get;set;}
        public string Last { get; set; }



    }
类程序
{
静态void Main(字符串[]参数)
{
数据集ds=新数据集();
DataTable dt=新的DataTable();
dt.TableName=“来源”;
Add(新的数据列(“第一”,typeof(字符串));
Add(新数据列(“Last”,typeof(string));
ds.Tables.Add(dt);
添加(“查尔斯”、“巴贝奇”);
添加(“Ada”、“Lovelace”);
List YourTypeList=(从ds.Tables[0]中的r开始)。AsEnumerable()
选择新类型()
{
第一个=r.字段(“第一个”),
最后一个=r.字段(“最后一个”)
}).ToList();
foreach(在类型列表中键入yt)
{
WriteLine(“{0},{1}”,yt.First,yt.Last);
}
}
}
给你的类型分类
{ 
第一个公共字符串{get;set;}
公共字符串Last{get;set;}
}
在DataTable.Rows上使用foreach并将它们添加到列表中也可以

         List<YourType> YourTypeList = new List<YourType>();
        foreach(DataRow r in dt.Rows )
        {
            YourTypeList.Add(new YourType() { 
                First = r.Field<string>("First"), 
                Last = r.Field<string>("Last") });

        }
List YourTypeList=newlist();
foreach(数据行r在dt.行中)
{
YourTypeList.Add(新建YourType(){
第一个=r.字段(“第一个”),
Last=r.Field(“Last”)};
}

您在datatable上执行什么样的数据操作?只是想知道为什么需要转换它?您是否有代码可以将单行转换为键入的列表条目?你使用什么作为列表项,你能分享一个类代码吗?这太完美了!感谢您给出如此清晰的答案和示例