2011-09-09 87 views
1

我正在開發一個Silverlight Web應用程序並使用RIA服務。從域服務類的部分代碼如下:RIA Services linq問題 - 轉換輸出

public IQueryable<ClassA> GetClassa() 
{ 
    return this.ObjectContext.ClassA; 
} 

這個服務是不是通過一個視圖叫:

SomeContext context = new SomeContext(); 
var items = context.Load(context.GetClassaQuery(). 
      Where(r => some condition). 
      Select(r => new ClassB(
      //ClassB initialization 
      ))); 

所以我想所有的ClassA和基於一個標準創建新的ClassB然後進入Telerik圖表

this._reviewedICs.ItemsSource = items; 

問題是我不能將它從一個隱式轉換爲另一個。我怎樣才能解決這個

編輯:完全以忘記了「加載()」有一個「已完成」事件-_- 後,事件被激發,我只是處理它在事件處理程序

context.Load(context.GetClassaQuery()).Completed(DoSomething) 
private void DoSomething(object sender, EventArgs e) 
{ 
    List<ClassA> = context.ClassA.ToList(); 
    //do whatever you want :) 
} 
+1

爲什麼不轉換在完成的事件內返回的classA實例? – Rus

回答

0

這裏是如何做到這一點的一個例子:

List<ClassB> allTheBs; 

SomeContext ctx = new SomeContext(); 

LoadOperation<ClassA> loader = ctx.Load(context.GetClassaQuery().Where(...)); 
loader.Completed += (s,e) => 
    { 
     var entities = (s as LoadOperation<ClassA>).Entities; 

     allTheBs = entities.Select (a => new ClassB() 
       { 
        a.Field1 = b.SomeField, 
        a.Field2 = b.SomeOtherField 
       }); 
    };