2009-05-08 160 views
0

是否有任何快速的方法来创建一个数据集中的表格,并用IQueryable中的模式填充它(数据不是来自EF或Linq2Sql)?我需要这个将网格绑定到我的数据。如何使用IQueryable中的数据填充数据集?

感谢, 罗伊

+0

你是如何得到IQuerable的? – Jeremy 2009-05-08 20:21:33

+0

我在解析“用模式填充它”时遇到问题。你的意思是说你的IQueryable中的对象的模式在设计时是未知的吗?即您必须创建一个DataTable,其中包含从IQueryable中的对象类型运行时计算出的列,然后将数据从IQueryable加载到DataTable中? – 2009-05-08 20:58:22

回答

1

可以使用System.Data.Linq.DataContext类的翻译功能设置为“自动”一表映射到类。

有一个例子:

using System.Data.Linq; 
using System.Data.SqlClient; 



    string cnnStr = "YourConnectionString"; 
    DataContext dc = new DataContext(cnnStr); 
    SqlConnection sqlCnn = (SqlConnection) dc.Connection; 
    sqlCnn.Open(); 
    SqlCommand sqlCmd = new SqlCommand("select ID, Name, [Date] From test", sqlCnn); 
    SqlDataReader sqlDr = sqlCmd.ExecuteReader(); 
    var result = dc.Translate<clsRow>(sqlDr); 
    foreach(clsRow row in result) 
    { 
     Console.Write(row.ID); 
     Console.Write(row.Name); 
     Console.Write(row.Date); 
    } 

在这种情况下,你需要一个名为Test 3列的表:ID,名称和测试 ,也称为clsRow在.net中具有相同属性的类名的表格列。

public class clsRow 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public DateTime Date { get; set; } 
}