2011-09-09 58 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 
       }); 
    };