2012-04-02 121 views
1

我有這段代碼,不知道如何通過Lambda表達式來簡化它?Lambda表達式和InvokeOperation

public void LoadEntities(QueryBuilder<Device> query, Action<ServiceLoadResult<Device>> callback, object state) 
{ 
    InvokeOperation<List<DivisionHierarchy>> obj = this.Context.GetAllDivisions(); 

    obj.Completed += new EventHandler(obj_Completed); 
} 

void obj_Completed(object sender, EventArgs e) 
{ 
    try 
    { 
     if (sender is InvokeOperation<List<DivisionHierarchy>>) 
     { 
      ObservableCollection<DivisionHierarchy> divisions = 
       new ObservableCollection<DivisionHierarchy>((sender as InvokeOperation<List<DivisionHierarchy>>).Value); 
     } 
    } 
    catch 
    {     
    } 
} 
+0

你想在代碼中什麼地方,以簡化? – 2012-04-02 14:55:19

+0

@MaratKhasanov所有代碼請致電 – 2012-04-02 14:57:32

回答

6

你的問題是有點太廣,所以我猜在這裏,但這裏lambda表達式的唯一地方是掛鉤到事件時。因此,而不是有一個單獨的obj_Completed方法,你可以這樣做:

public void LoadEntities(QueryBuilder<Device> query, Action<ServiceLoadResult<Device>> callback, object state) 
    { 
     InvokeOperation<List<DivisionHierarchy>> obj = this.Context.GetAllDivisions(); 

     obj.Completed += (sender, e) => 
     { 
      try 
      { 
       if (sender is InvokeOperation<List<DivisionHierarchy>>) 
       { 
        ObservableCollection<DivisionHierarchy> divisions = 
         new ObservableCollection<DivisionHierarchy>((sender as InvokeOperation<List<DivisionHierarchy>>).Value); 

       } 
      } 
      catch 
      {     
      } 
     } 
    } 
+0

@Peretz:請接受您認爲正確的答案。不要複製/粘貼到問題中。 – abatishchev 2012-04-02 15:02:06

0

所以最終的解決方案是在這裏

public void LoadEntities(QueryBuilder<Device> query, Action<ServiceLoadResult<Device>> callback, object state) 
    { 

    ((InvokeOperation<List<DivisionHierarchy>>)this.Context.GetAllDivisions()).Completed += (sender, e) => 
     { 
      try 
      { 
       if (sender is InvokeOperation<List<DivisionHierarchy>>) 
       { 
        ObservableCollection<DivisionHierarchy> divisions = 
         new ObservableCollection<DivisionHierarchy>((sender as InvokeOperation<List<DivisionHierarchy>>).Value); 
        } 
       } 
       catch 
       { 
       } 
     };   
}