2016-09-19 5 views
0

私は以下のStudentクラスを持っています。各IDには試験のリストがあり、試験の列をExams_Line_listのプロパティにマップする必要があります。 Excelシートを読むExams_Line_listリストに追加マッピングする列

public class Student 
    { 
     string id; 
     public List<String> exams_Line_list = new List<String>(); 
     public String exams_Line1; 

     public string Exams_Line1 
     { 
      get { return exams_Line1; } 
      set { exams_Line1 = value; } 
     } 

     public string ID 
     { 
      get { return id; } 
      set { id = value; } 
     } 

     public List<String> Exams_Line_list 
     { 
      get { return exams_Line_list; } 
      set { exams_Line_list = value; } 
     } 
} 

空の次のコードリターン:

IQueryable<Student> Students_var; 
var excel = new ExcelQueryFactory(fileName_global1); 

excel.AddMapping<Student>(x => x.ID, "STU_NO"); 
excel.AddMapping<Student>(x => x.Exams_Line1, "Exam"); 
Students_var = from c in excel.Worksheet<Student>("Stu_Schedule") 
       select c; 

List<Student> StudentList_c = Students_var.ToList(); 

var grouped = StudentList_c.GroupBy(x => x.ID).Select(x => new Student 
       { 
       ID = x.Key, 
       Exams_Line_list = x.SelectMany(z => z.Exams_Line_list).ToList() 
       }).ToList(); 

foreach (var r in grouped) 
{ 
    Console.WriteLine(r.ID); 
     foreach (String s1 in r.Exams_Line_list) 
        Console.WriteLine(s1); 
} 

スキーマ:

enter image description here私は試験の列をマップするためにStringプロパティを追加してい

、(Exams_Line1) 区切り記号StudentList_c enter image description here

は、今では、各試験の値と重複するIDを含むすべての行を読みますが、定義されたリストにグループ化をする(Exams_Line1

+0

'StudentList_c'の中にあるものをチェックするために' var grouped = StudentList_c.GroupBy ... '行の前にブレークポイントを追加できますか?具体的には、試験文字列の正しい値が含まれていることを確認します。 –

+0

はい、質問が更新されました –

+0

大丈夫ですか? –

答えて

0

がいかにあなただけのこの使用することができます:ここで

var grouped = StudentList_c.GroupBy(x => x.ID).Select(x => new Student 
{ 
    ID = x.Key, 
    Exams_Line_list = x.Select(z => z.Exams_Line1).ToList() 
}).ToList(); 

を私は、Student_ListがExcelシートの行に対応するすべての行を持ち、Exams_Line1プロパティがExam列にマップされていると仮定しています。

+0

エラー「 System.Collections.Generic.List」 –

+0

Exams_Line1は文字列ですが、Exams_Line_listリスト

+0

はありがとうございある暗黙的に型「System.Collections.Generic.List 」を変換できません。 、それは私の時間を保存されています:) –

関連する問題