2016-10-19 13 views
-2

この作業ではどうすればいいですか?反復データフィールドの配列内のループ

protected void Button1_Click(object sender, EventArgs e){ 

     string FileExtension = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName); 
     if (FileExtension == ".csv" || FileExtension == ".xls" || FileExtension == ".xlsx") 
     { 

      string filename = Path.Combine(Server.MapPath("~/UploadExcels"), new Guid() + ".xlsx"); 
      try 
      { 
       FileUpload1.PostedFile.SaveAs(filename); 
       string excelConnectionString = string.Empty; 
       excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
       filename + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 

       if (FileExtension == ".xls") 
       { 
        excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
        filename + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; 
       } 
       else if (FileExtension == ".xlsx") 
       { 
        excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
        filename + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; 
       } 

       string[] Lines = File.ReadAllLines(filename); 

       string[] Fields; 
       Lines = Lines.Skip(1).ToArray(); 

       Dictionary<string, Int32> emlist = new Dictionary<string, int>(); 

       List<TaskExport> emList = new List<TaskExport>(); 
       foreach (var line in Lines) 
       { 
        Fields = line.Split(new char[] { ';' }); 

          emList.Add(

           new TaskExport 
           { 
            Plant = Fields[0], 
            Prod__Number = Fields[1], 
            Order_Number = Fields[2], 
            Vehicle_Number = Fields[3], 
            Delivery_Number = Fields[4], 
            Vehicle_Type = Fields[5], 
            Engine_Type = Fields[6], 
            Plant_Dispatch_Date = Fields[7], 
            Interior = Fields[8], 
            Paint = Fields[9], 
            Model = Fields[10], 
            Country_Name = Fields[11], 
            Engine_Number = Fields[12], 
            Sample_Digit = Fields[13], 
            Number_Of_Code = Fields[14], 
            Codes = Fields[15], 
            Number_Of_FZEG = Fields[215], 
            Country_Code = Fields[216] 
           }); 





        using (ExportExcelEntities table = new ExportExcelEntities()) 
        { 
         foreach (var db in emList) 
         { 
          var dt = table.TaskExports.Where(s => s.ID.Equals(db.ID)).FirstOrDefault(); 
          if (dt != null) 
          { 
           dt.Plant = db.Plant; 
           dt.Prod__Number = db.Prod__Number; 
           dt.Order_Number = db.Prod__Number; 
           dt.Vehicle_Number = db.Vehicle_Number; 
           dt.Delivery_Number = db.Delivery_Number; 
           dt.Vehicle_Type = db.Vehicle_Type; 
           dt.Engine_Type = db.Engine_Type; 
           dt.Plant_Dispatch_Date = db.Plant_Dispatch_Date; 
           dt.Interior = db.Interior; 
           dt.Paint = db.Paint; 
           dt.Model = db.Model; 
           dt.Country_Name = db.Country_Name; 
           dt.Engine_Number = db.Engine_Number; 
           dt.Sample_Digit = db.Sample_Digit; 
           dt.Number_Of_Code = db.Number_Of_Code; 
           dt.Codes = db.Codes; 
           dt.Number_Of_FZEG = db.Number_Of_FZEG; 
           dt.Country_Code = db.Country_Code; 
           table.TaskExports.Add(db); 
          } 
          else 
          { 
           table.TaskExports.Add(db); 
          } 
         } 
         table.SaveChanges(); 
         Label1.Text = "Data has been Exported"; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       Label1.Text = "cant save this data" + ex; 
      } 
     } 
    } 
    } 
} 

私が何をしなければならないすべては、フィールド[15]に到達するまで、私はループに「コード」フィールドという持ってこの「コード=フィールド[15]」

   List<TaskExport> emList = new List<TaskExport>(); 
       foreach (var line in Lines) 
       { 
        Fields = line.Split(new char[] { ';' }); 

          emList.Add(

           new TaskExport 
           { 
            Plant = Fields[0], 
            Prod__Number = Fields[1], 
            Order_Number = Fields[2], 
            Vehicle_Number = Fields[3], 
            Delivery_Number = Fields[4], 
            Vehicle_Type = Fields[5], 
            Engine_Type = Fields[6], 
            Plant_Dispatch_Date = Fields[7], 
            Interior = Fields[8], 
            Paint = Fields[9], 
            Model = Fields[10], 
            Country_Name = Fields[11], 
            Engine_Number = Fields[12], 
            Sample_Digit = Fields[13], 
            Number_Of_Code = Fields[14], 
            Codes = Fields[15], 
            Number_Of_FZEG = Fields[215], 
            Country_Code = Fields[216] 
           }); 

を反復するループを挿入していますフィールド[214] .. 誰かこの問題で私を助けてください-_- ???

+0

大量のコードがあります。あなたが何をしたいのか、どこに一般化された方法で固執したのかを教えてください。 – Imad

+0

ループとはどういう意味ですか?あるいは、 'field [16]'〜 'field [213]'を埋めるためにループを作成したいのですか? – Prisoner

答えて

-1

まず、クラスのすべての属性を宣言する必要があります。

私はthis answerがそうすることを願っています。

次に、プロパティリスト(変数がpropsの場合)をループし、値を設定します。

    List<TaskExport> emList = new List<TaskExport>(); 
        foreach (var line in Lines) 
        { 
         Fields = line.Split(new char[] { ';' }); 
         TaskExport taskExport = new TaskExport(); 
         for(int i = 0; i < props.Length; i++) 
         { 
          prop[i].SetValue(taskExport, Convert.ChangeType(Fields[i], propertyInfo.PropertyType), null); 
         } 
         emList.Add(taskExport); 
        } 
+0

@ stucker1998そこに何かエラーがありますか?名前はpropertynameに文字列を与えるべきです。 – Imad

+0

構文は私のmenthorと同じです。..しかし、私は本当に何か.Nameを理解していませんか?はい、私はそこにエラーを持っています、私に説明してください期限内に私はまだ – stucker1998

+0

私はまだそれを得ることはありませんか? -_-どのように私はそれを作成する必要がありますか? – stucker1998