簡體   English   中英

如何將 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");
           
        }

我收到以下錯誤

無法將類型“System.Collections.Generic.IEnumerable<System.Linq.IGrouping<string, System.Data.DataRow>>”隱式轉換為“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();

解釋如下:

  1. 我將您的ListItems class 更改為ListItem並將itemNumbers屬性更改為List<string>類型
  2. 我將所有項目(我不知道您數據庫中列的名稱)分組到單個ListItem實例,按accountNumber列分組,並將所有項目存儲在itemNumbers屬性中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM