2014-03-25 57 views
0

我正在使用SqlHelper來執行DB中的存儲過程。將數據集轉換爲IList

在一個命名空間稱爲常量我定義是這樣的

public class ShowInstitutes 
{ 
    public string InstituteName { get; set; } 
    public string InstituteCity { get; set; } 
    public int InstituteId { get; set; } 
} 

在DAL層我想在IList格式執行存儲過程和得到的結果

public IList<ShowInstitutes> ShowInstitutes(int instituteId) 
{ 
    return SqlHelper.ExecuteDataset(dBConnection, "usp_SPName"); 
} 

我正在以下錯誤:

Cannot implicitly convert type 'System.Data.DataSet' to 'System.Collections.Generic.IList<>

+0

我不知道,如果你能做到這一點。試試這個帖子:http://stackoverflow.com/questions/17107220/convert-dataset-to-object-list –

回答

3
public IList<ShowInstitutes> ShowInstitutes(int instituteId) 
{ 
    var d = SqlHelper.ExecuteDataset(dBConnection, "usp_SPName"); 

    var myData = d.Tables[0].AsEnumerable().Select(data => new ShowInstitutes{ 
     InstituteName = data.Field<string>("InstituteName "), 
     InstituteCity = data.Field<string >("InstituteCity "), 
     InstituteId = data.Field<int>("InstituteId ") 
    }); 
    var list = myData.ToList(); 
    return list; 
} 
+0

對不起,這是我的錯誤! – Sajeetharan

3

您可以像這樣將您的數據集結果轉換​​爲IList。

public IList<ShowInstitutes> ShowInstitutes(int instituteId) 
{ 
    var dataTable = SqlHelper.ExecuteDataset(dBConnection, "usp_SPName"); 
    var SourceLists = new List<ShowInstitutes>(); 
    for (var index = 0; index < dataTable.Rows.Count; index++) 
    { 
     SourceLists.Add(new ShowInstitutes 
     { 
      InstituteName = Convert.ToString(dataTable.Rows[index]["Columnname"], CultureInfo.InvariantCulture), 
      InstituteCity = Convert.ToString(dataTable.Rows[index]["Columnname"], CultureInfo.InvariantCulture), 
      InstituteId = Convert.ToInt32(dataTable.Rows[index]["Columnname"], CultureInfo.InvariantCulture) 
     }); 
    } 
    return SourceLists; 
} 
0
public class info 
{ 
    public string counter 
    { 
     get; set; 
    } 
    public string age 
    { 
     get; 
     set; 
    } 
    public string id 
    { 
     get; 
     set; 
    } 
    public string marks 
    { 
     get; 
     set; 
    } 
    public string name 
    { 
     get; 
     set; 
    } 

    public List<info> getdata() 
    { 
     string c = "Data Source=bla ;bla ;bla"; 

     SqlConnection con = new SqlConnection(c); 
     DataSet ds = SqlHelper.ExecuteDataset(con, CommandType.Text, "SELECT * from table1"); 

     var list = (ds.Tables[0].AsEnumerable().Select(
      df => 
      new info 
      { 
       age = df[0].ToString(), 
       counter = df[1].ToString(), 
       id = df[3].ToString(), 
       name = df[4].ToString(), 
       marks = df[2].ToString() 
      })).ToList(); 

     return list; 
    } 

} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     info a =new info(); 
     List<info> list1= a.getdata(); 
     foreach (var info in list1) 
     { 
      Console.WriteLine(info.name+" "+info.age+" "+info.marks); 
     } 
     Console.Read(); 
    } 
} 
+0

請不要關注變量名稱。目標是顯示數據集轉換爲列表:) – user2329366

+0

請提供一些關於您的代碼如何解決問題的解釋。 OP的代碼有什麼問題,你如何解決它?請通過編輯答案來添加解釋,而不是在評論中回覆。 –

+0

感謝您的幫助 – user2329366