我正在开发Silverlight Web应用程序并使用RIA服务。域服务类的部分代码如下所示:
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;
问题在于我不能隐式地将它从一个转换为另一个。我该如何解决这个问题?
编辑:Totaly忘了'Load()'有一个'Completed'事件-_- 事件被触发后我只是在事件处理程序
中处理它context.Load(context.GetClassaQuery()).Completed(DoSomething)
private void DoSomething(object sender, EventArgs e)
{
List<ClassA> = context.ClassA.ToList();
//do whatever you want :)
}
答案 0 :(得分: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
} );
};