2014-03-25 60 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