2009-04-16 27 views
1

http://www.erictobia.com/2009/02/21/LoadADataTableWithLINQ.aspx で次の例が見つかりました。残念ながら、VBで必要ですが、私も自動化されたコードコンバータも再認識できない構造体を使用しています。 VB.Netでこれがどのように記述されるべきか、誰でも知っていますか?Linqを使用してDataTableをロードする - C#をVB.Netに変換する

PeopleDataSet ds = new PeopleDataSet(); 
using (PeopleDataContext context = new PeopleDataContext()) 
{ 
    (from p in context.Persons 
    select new 
       { 
        Row = ds.Person.AddPersonRow(p.Id, p.FirstName, p.LastName) 
       }).ToList(); 

} 

答えて

2

は、LINQを使用してのためにLINQを使用してのケースのように私には見える(問題のスポットは「... {新しい選択」です)。

ただ、各context.Persons

For Each p As Person In context.Persons 
    ds.Person.AddPersonRow(p.Id, p.FirstName, p.LastName) 
Next 
+1

イエップ。問題のコードが完全で、ToList()で作成されたリストで何も実行されていないと仮定すると、LINQを使用する必要はありません。 –

+1

ループのスコープの前に 'p'を宣言しないでください。代わりにループヘッドで宣言してください( 'For Each p [As Person] in context.Persons')。 –

+1

ありがとう、コンラッド私は答えを微調整しました。私はVB.NEで多大な時間を費やすとは言えません。 – AnthonyWJones

2

のためにアンソニーは正しい答えを与えています。しかし、レコードの次のようnew { … }構築物は、VBで表すことができる:

Dim result = From p As Person in context.Persons _ 
      Select New With { _ 
       .Row = ds.Person.AddPersonRow(p.Id, p.FirstName, p.LastName) _ 
      } 
0

名前空間TestBLL {パブリック静的クラスConvertToDataTable { "データテーブルにObjectArrayの変換" #region

/// <summary> 
    /// Method to Convert Datatable from object Array. 
    /// </summary> 
    /// <param name="array"></param> 
    /// <returns></returns> 
    public static DataTable ConvertToDatatable(this Object[] array) 
    { 

     PropertyInfo[] properties = array.GetType().GetElementType().GetProperties(); 
     DataTable dt = CreateDataTable(properties); 
     if (array.Length != 0) 
     { 
      foreach (object o in array) 
       FillData(properties, dt, o); 
     } 
     return dt; 
    } 

    /// <summary> 
    /// Method To Create total column of datatable. 
    /// </summary> 
    /// <param name="properties"></param> 
    /// <returns></returns> 
    private static DataTable CreateDataTable(PropertyInfo[] properties) 
    { 
     DataTable dt = new DataTable(); 
     DataColumn dc = null; 
     foreach (PropertyInfo pi in properties) 
     { 
      dc = new DataColumn(); 
      dc.ColumnName = pi.Name; 
      //dc.DataType = pi.PropertyType; 
      dt.Columns.Add(dc); 
     } 
     return dt; 
    } 

    /// <summary> 
    /// Method for Fill data in DataTable. 
    /// </summary> 
    /// <param name="properties"></param> 
    /// <param name="dt"></param>   
    private static void FillData(PropertyInfo[] properties, DataTable dt, Object o) 
    { 
     DataRow dr = dt.NewRow(); 
     foreach (PropertyInfo pi in properties) 
     { 
      dr[pi.Name] = pi.GetValue(o, null); 
     } 
     dt.Rows.Add(dr); 
    } 

    #endregion 

} 

}

+0

EmployeeDataClassesDataContext obj_empcontext = new EmployeeDataClassesDataContext(); tbl_EmployeeDetail obj_emp = obj_empcontext.tbl_EmployeeDetails.First(p => p.EmployeeID == int_EmpID); obj_empcontext.tbl_EmployeeDetails.DeleteOnSubmit(obj_emp); obj_empcontext.SubmitChanges(); – piyush

1
tbl_EmployeeDetail obj_empdetails = new tbl_EmployeeDetail(); 
       obj_empdetails = Connection.obj_EmployeeDataClassesDataContext.tbl_EmployeeDetails.Single(m => m.EmployeeID == Convert.ToInt32(int_EmpID)); 
       obj_empdetails.FirstName = str_FirstName; 
       obj_empdetails.LastName = str_LastName; 
       obj_empdetails.DateOfJoining = dt_DateOfJoining; 
       obj_empdetails.DepartmentID = int_DepartmentID; 
       obj_empdetails.Designation = str_Designation; 
       obj_empdetails.ExperienceInMonths = int_ExperienceInMonths; 
       obj_empdetails.salary = dec_Salary; 
       Connection.obj_EmployeeDataClassesDataContext.SubmitChanges(); 
関連する問題