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