Vous pouvez utiliser la fonction Traduire de la classe System.Data.Linq.DataContext à « automatiquement » mapper un tableau dans une classe.
Il est un exemple:
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);
}
Dans ce cas, vous avez besoin d'une table appelée test avec 3 colonnes: ID, Nom et test et aussi une classe appelée clsRow en .Net avec le même nom de propriétés des colonnes de la table.
public class clsRow
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime Date { get; set; }
}
Comment obtenez-vous l'IQuerable? – Jeremy
J'ai du mal à parser "le remplir avec le schéma". Voulez-vous dire que le schéma des objets de votre IQueryable est inconnu au moment du design? c'est-à-dire que vous devez créer un DataTable avec des colonnes déterminées à l'exécution à partir du type d'objets dans IQueryable, puis charger les données de IQueryable dans le DataTable? –