是否有可能让我的RIA IQueryable Web服务表现得像我想要的那样?

时间:2013-09-15 04:01:02

标签: c# silverlight wcf-ria-services iqueryable

我正在使用WCF RIA编写Silverlight应用程序来获取大部分数据。我有AutoCompleteBoxes的几个实例,我想要一个大的数据列表,但实际上只需要表中的几个字段。我真的想创建一个通用的UserControl,以便我可以设置我想要它当前使用的Type

AutoCompleteBox有一个DomainDataSource,因为我想要一种简单的方法来过滤它应该显示的数据(如果它显示的是联系人,那么我想要传递一个FilterDescriptor来说明什么要显示的联系人类型)。我很确定DomainDataSource需要一个Iqueryable返回才能运行..这就是我在服务器上尝试做的事情:

public IQueryable<CompactData> GetCompactData(string type)
{
    switch (type)
    {
        case "Contact":
            return this.ObjectContext.Contacts.Select(p => new CompactData() { GUID = p.GUID, Field1 = p.FirstName + " " + p.LastName });//.ToList();
        case "Client_Clients":
            return this.ObjectContext.Client_Clients.Select(p => new CompactData() { GUID = p.GUID, Field1 = p.ClientCode, Field2 = p.Name });//.ToList();
        default:
            throw new NotImplementedException();
    }
}

我喜欢这个想法,因为AutoCompleteBox可以绑定到Field1和Field2,我在这里设置了这意味着什么。更重要的是,使用FilterDescriptor应用过滤器非常简单,而不必手动构建表达式树。不幸的是,我的客户端在返回Iqueryable时没有看到该方法(如果我将其更改为返回List然后它是可见的,但是我很确定我不能使用我的FilterDescriptors)。问题是我的CompactData类型,为什么不是IQueryable类型?

0 个答案:

没有答案