Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是否可以让这个RIA IQueryable web服务按我所希望的方式运行?_C#_Silverlight_Wcf Ria Services_Iqueryable - Fatal编程技术网

C# 我是否可以让这个RIA IQueryable web服务按我所希望的方式运行?

C# 我是否可以让这个RIA IQueryable web服务按我所希望的方式运行?,c#,silverlight,wcf-ria-services,iqueryable,C#,Silverlight,Wcf Ria Services,Iqueryable,我正在编写一个Silverlight应用程序,使用WCF RIA获取大部分数据。我有几个例子使用了自动完成框,我想要一个大的数据列表,但实际上只需要表中的几个字段。我真的很想创建一个通用的UserControl,这样我就可以设置它当前使用的类型 AutoCompleteBox有一个DomainDataSource,因为我想要一种简单的方法来过滤它应该显示的数据(如果它显示联系人,那么我想传入一个FilterDescriptor,它说明要显示的联系人类型)。我相当肯定,DomainDataSour

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

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();
    }
}
public IQueryable GetCompactData(字符串类型)
{
开关(类型)
{
案例“联系人”:
返回此.ObjectContext.Contacts.Select(p=>newcompactdata(){GUID=p.GUID,Field1=p.FirstName+“”+p.LastName});//.ToList();
“客户”案例:
返回此.ObjectContext.Client_Clients.Select(p=>newcompactdata(){GUID=p.GUID,Field1=p.ClientCode,Field2=p.Name});//.ToList();
违约:
抛出新的NotImplementedException();
}
}

我喜欢这个想法,因为
AutoCompleteBox
可以只绑定到Field1和Field2,我可以设置这里的含义。更重要的是,使用
FilterDescriptor
应用过滤器非常容易,而不必手动构建表达式树。不幸的是,我的客户机在返回Iqueryable时没有看到该方法(如果我将其更改为返回列表,则该方法可见,但我相当确定我不能使用FilterDescriptors)。问题是我的
CompactData
类型,为什么该类型不可用?

如果您打算投票结束我的问题,请告诉我您认为应该结束该问题的原因,或者我如何改进该问题,我将不胜感激。我正在尝试做一些事情,我有我尝试过的代码,但那不起作用,现在我在问我做错了什么,我想要的是否可能。我看不出有什么问题你为什么用这个签名?(字符串类型)@seyyedpuyasofbaf为什么呢?你能添加CompactData类的定义吗?我打赌CompactData没有主键(我知道它不是一个数据库实体,但它仍然需要一个主键属性-[key]-在RIA服务的唯一属性上)-或者该类型在其他方面不适合作为RIA服务实体。