2009-04-16 3 views
1

Я нашел следующий пример на http://www.erictobia.com/2009/02/21/LoadADataTableWithLINQ.aspx К сожалению, мне это нужно в VB, и он использует некоторые конструкции, которые не меняют ни я, ни автоматические конвертеры кода. Кто-нибудь знает, как это должно быть написано в VB.Net? (Проблема место является «выбрать новый {...»)Загрузить DataTable с помощью Linq - конвертировать 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' перед областью цикла. Вместо этого объявите его в заголовке цикла ('Для каждого p [As Person] в контексте. 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 { #region "Преобразование ObjectArray в DataTable"

/// <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(); 
Смежные вопросы