0

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

AutoCompleteBox一个DomainDataSource因为我想要一种简单的方法来过滤它应该显示的数据(如果它显示联系人,那么我想传入一个FilterDescriptor说明要显示什么类型的联系人)。我相当确定 aDomainDataSource需要一个 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,我在这里设置它的含义。更重要的是,使用 a 应用过滤器真的很容易,FilterDescriptor而不必手动构建表达式树。不幸的是,我的客户在返回 Iqueryable 时看不到该方法(如果我将其更改为返回 List,那么它是可见的,但是我相当确定我不能使用我的 FilterDescriptors)。问题是我的CompactData类型,为什么不是 IQueryable 类型?

4

0 回答 0