2009-05-08 3 views
0

Existe-t-il un moyen rapide de créer une table dans un ensemble de données et de le remplir avec le schéma d'un IQueryable (les données ne proviennent pas de EF ou de Linq2Sql)? J'ai besoin de cela pour lier une grille à mes données.Comment puis-je remplir un jeu de données avec des données d'un IQueryable?

Merci, Roy

+0

Comment obtenez-vous l'IQuerable? – Jeremy

+0

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? –

Répondre

1

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; } 
} 
Questions connexes