如何将 IEnumerable 类型转换为 List 类型?
How to convert IEnumerable type to List type?
我正在尝试获取某些数据库值并将它们存储在数据表中。之后,我应用 linq 将所有数据与帐号分组。我将最终结果存储在以下 class 类型的列表中 -
class ListItems
{
public string accountNumbers
{
get;
set;
}
public string itemNumbers
{
get;
set;
}
}
我的代码是:
List<ListItems> accounts = new List<ListItems>();
public void GetItems(int ID1, int ID2)
{
con = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_FetchItems";
cmd.Parameters.AddWithValue("@id1", ID1);
cmd.Parameters.AddWithValue("@id2", ID2);
cmd.Connection = con;
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adp.Fill(dt);
accounts = from result in dt.AsEnumerable()
group result by result.Field<string>("accountNumber");
}
我收到以下错误
Cannot implicitly convert type
'System.Collections.Generic.IEnumerable<System.Linq.IGrouping<string,
System.Data.DataRow>>' to
'System.Collections.Generic.List<PricingPractice.ListItems>
在线
accounts = from result in dt.AsEnumerable()
group result by result.Field<string>("accountNumber");
我什至尝试使用 ToList() 转换此表达式,但它也不起作用。
试试这个:
class ListItem
{
public string accountNumber { get; set; }
public List<string> itemNumbers { get; set; }
}
accounts = (from result in dataTable.AsEnumerable() group result by result.Field<string>("accountNumber") into g select new ListItems { accountNumber = g.Key, itemNumbers = g.Select(x => x.Field<string>("<itemNumber>")).ToList() }).ToList();
解释如下:
- 我将你的
ListItems
class 更改为 ListItem
并将 itemNumbers
属性 的类型更改为 List<string>
- 我将所有项目(我不知道您数据库中列的名称)分组到单个
ListItem
实例,按 accountNumber
列分组,并存储所有项目在 itemNumbers
属性
我正在尝试获取某些数据库值并将它们存储在数据表中。之后,我应用 linq 将所有数据与帐号分组。我将最终结果存储在以下 class 类型的列表中 -
class ListItems
{
public string accountNumbers
{
get;
set;
}
public string itemNumbers
{
get;
set;
}
}
我的代码是:
List<ListItems> accounts = new List<ListItems>();
public void GetItems(int ID1, int ID2)
{
con = new SqlConnection(connection);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_FetchItems";
cmd.Parameters.AddWithValue("@id1", ID1);
cmd.Parameters.AddWithValue("@id2", ID2);
cmd.Connection = con;
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adp.Fill(dt);
accounts = from result in dt.AsEnumerable()
group result by result.Field<string>("accountNumber");
}
我收到以下错误
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<System.Linq.IGrouping<string, System.Data.DataRow>>' to 'System.Collections.Generic.List<PricingPractice.ListItems>
在线
accounts = from result in dt.AsEnumerable()
group result by result.Field<string>("accountNumber");
我什至尝试使用 ToList() 转换此表达式,但它也不起作用。
试试这个:
class ListItem
{
public string accountNumber { get; set; }
public List<string> itemNumbers { get; set; }
}
accounts = (from result in dataTable.AsEnumerable() group result by result.Field<string>("accountNumber") into g select new ListItems { accountNumber = g.Key, itemNumbers = g.Select(x => x.Field<string>("<itemNumber>")).ToList() }).ToList();
解释如下:
- 我将你的
ListItems
class 更改为ListItem
并将itemNumbers
属性 的类型更改为List<string>
- 我将所有项目(我不知道您数据库中列的名称)分组到单个
ListItem
实例,按accountNumber
列分组,并存储所有项目在itemNumbers
属性