C# 非常感谢您的帮助。很抱歉没有尽快指定格式,但是这些列实际上都是字符串类型。如果它不是生产代码,那也没关系,因为它只是为了学习。。现在很难,我想知道,如果这是一个障碍,为什么他们要求我们将结果放入数据表中。 DataTable cours = autOuvr

C# 非常感谢您的帮助。很抱歉没有尽快指定格式,但是这些列实际上都是字符串类型。如果它不是生产代码,那也没关系,因为它只是为了学习。。现在很难,我想知道,如果这是一个障碍,为什么他们要求我们将结果放入数据表中。 DataTable cours = autOuvr,c#,linq,visual-studio,datatable,C#,Linq,Visual Studio,Datatable,非常感谢您的帮助。很抱歉没有尽快指定格式,但是这些列实际上都是字符串类型。如果它不是生产代码,那也没关系,因为它只是为了学习。。现在很难,我想知道,如果这是一个障碍,为什么他们要求我们将结果放入数据表中。 DataTable cours = autOuvrDS.Tables["cours"]; DataTable etudiants = autOuvrDS.Tables["etudiants"]; DataTable resultats = autOuvrDS.Tables["resultats


非常感谢您的帮助。很抱歉没有尽快指定格式,但是这些列实际上都是字符串类型。如果它不是生产代码,那也没关系,因为它只是为了学习。。现在很难,我想知道,如果这是一个障碍,为什么他们要求我们将结果放入数据表中。
DataTable cours = autOuvrDS.Tables["cours"];
DataTable etudiants = autOuvrDS.Tables["etudiants"];
DataTable resultats = autOuvrDS.Tables["resultats"];

IEnumerable<DataRow> query = from etudiant in etudiants.AsEnumerable()
                             join resultat in resultats.AsEnumerable()
                             on etudiant.Field<string>("matricule") equals resultat.Field<string>("matricule")
                             join cour in cours.AsEnumerable()
                             on resultat.Field<string>("sigle") equals cour.Field<string>("sigle")
                             select etudiant;

DataTable table = query.CopyToDataTable<DataRow>();
foreach (DataRow row in table.Rows)
        {
            Console.WriteLine(
                row.Field<string>("Prenom") + "\t\t" +
                row.Field<string>("Nom") + "\t\t" +
                row.Field<string>("Sigle") + "\t\t" +   /// PROGRAM CRASH HERE
                row.Field<string>("Cours") + "\t\t"
                );
        }
public struct QueryResult
{
    public string Prenom;
    public string Nom;
    public string Sigle;
    public string Cours;
}
var query = 
    from etudiant in etudiants.AsEnumerable()
    join resultat in resultats.AsEnumerable()
    on etudiant.Field<string>("matricule") equals resultat.Field<string>("matricule")
    join cour in cours.AsEnumerable()
    on resultat.Field<string>("sigle") equals cour.Field<string>("sigle")
    select new QueryResult
    {
        Prenom = etudiant.Field<string>("Prenom"),
        Nom = etudiant.Field<string>("Nom"),
        Sigle = resultat.Field<string>("Sigle"),
        Cours = resultat.Field<string>("Cours")
    };

List<QueryResult> results = query.ToList();

foreach (QueryResult row in results)
{
    Console.WriteLine("{0}\t\t{1}\t\t{2}\t\t{3}\t\t",
        row.Prenom, row.Nom, row.Sigle, row.Cours
    );
}
var query = 
    from etudiant in etudiants.AsEnumerable()
    join resultat in resultats.AsEnumerable()
    on etudiant.Field<string>("matricule") equals resultat.Field<string>("matricule")
    join cour in cours.AsEnumerable()
    on resultat.Field<string>("sigle") equals cour.Field<string>("sigle")
    select new { etudiant, cour };


// Définir la structure de la table de sortie
DataTable table = new DataTable();
table.Columns.Add("Prenom", typeof(string));
table.Columns.Add("Nom", typeof(string));
table.Columns.Add("Sigle", typeof(string));
table.Columns.Add("Cours", typeof(string));

// Remplir la table de sortie à partir la requête
foreach (var row in query)
{
    DataRow newrow = table.NewRow();
    newrow["Prenom"] = row.etudiant.Field<string>("Prenom");
    newrow["Nom"] = row.etudiant.Field<string>("Nom");
    newrow["Sigle"] = row.cour.Field<string>("Sigle");
    newrow["Cours"] = row.cour.Field<string>("Cours");
    table.Rows.Add(newrow);
}