2010-02-27 52 views
1

我在一些項目中使用了myGeneration;我注意到BusinessEntity將查詢的結果保存在一個DataTable中,但是如果開發人員想要將結果作爲List對象來看呢? 爲了解決這個問題,我爲自己的使用做了以下修改。如何使用myGeneration從BusinessEntity獲取對象列表?

public class BusinessEntity 

{ 
    //.... 
    public DataTable TheDataTable 
    { 
     get 
     { 
      return _dataTable; 
     } 
     set 
     { 
      _dataTable = value; 
     } 
    } 

    public void PutTheRow(DataRow pRow) 
    { 

     DataRow newRow = _dataTable.NewRow(); 
     newRow.ItemArray = pRow.ItemArray; 
     _dataTable.Rows.Add(newRow); 
     _dataRow = newRow; 
     //Rewind(); 
     _dataTable.AcceptChanges(); 

    } 

    ....... 


} 

現在假設我們有一個表「僱員」和我們產生對他的一類,也是我做如下修改:

public abstract class Employee : _Employee 
{ 
    public Employee() 
    { 

    } 
    public List<Employee> AsList() 
    { 

     List<Employee> list = new List<Employee>(); 
     Employee businessEntity = null; 
     foreach (System.Data.DataRow row in TheDataTable.Rows) 
     { 
      businessEntity = new Employee(); 
      businessEntity.TheDataTable = TheDataTable.Clone(); 
      businessEntity.PutTheRow(row); 
      list.Add(businessEntity); 


     } 
     return list; 
    } 
} 

現在我可以找對象的列表,從結果該查詢,而不是一個對象,並將結果在數據表中的:

Employee employee = new Employee(); 
    employee.Where.ID.Operator = WhereParameter.Operand.NotIn; 
    employee.Where.ID.Value = "1,2,3"; 
    employee.Query.Load(); 
    foreach (Employee employeeLoop in employee.AsList()) 
    { 
     TreeNode node = new TreeNode(employeeLoop.s_ID); 
     node.Tag = employeeLoop; 
     mMainTree.Nodes.Add(node); 
} 

然後,我可以訪問選定的僱員如下:

Employee emp = (Employee) mMainTree.SelectedNode.Tag; 
emp.Name = "WWWWW"; 
emp.Save(); 

謝謝。 你有更好的提示,想法? 有關更多討論,請訪問MyGeneration論壇。

回答

0

爲什麼要創建一個名爲AsList()的方法,它只返回一個Item?你可以只創建這樣一個通用的擴展方法(從我的頭頂創建..):

public static List<T> AsList(this T item) 
{ 
    return new List<T>() { item }; 
} 

沒有一點遍歷一個的員工列表,將其添加到樹節點。

+0

謝謝you.AsList()返回對象列表,而不是一個項目。 我想說的想法是我所做的修改將行從DataTable轉換爲對象列表。 – houssam11350 2010-06-29 15:55:22

+0

不會在您的答案中添加廣告。 – jgauffin 2011-08-17 13:42:44