Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Silverlight 域服务调用的Where子句_Silverlight_Wcf Ria Services - Fatal编程技术网

Silverlight 域服务调用的Where子句

Silverlight 域服务调用的Where子句,silverlight,wcf-ria-services,Silverlight,Wcf Ria Services,在域服务调用中使用LINQ对查询设置where子句时,我遇到了一个问题 如果我没有设置where子句,它就可以正常工作,我会在已完成的事件中返回结果(我只为已完成的事件实现了eventhandler,以在这里演示我的问题) 加载操作加载= _Load(_Context.GetUsersQuery()); 加载完成+=(se,ea)=> MyList.ItemsSource=load.Entities.FirstOrDefault(); 如果我在查询中放入where子句,我只会得到一个空列表。w

在域服务调用中使用LINQ对查询设置where子句时,我遇到了一个问题

如果我没有设置where子句,它就可以正常工作,我会在已完成的事件中返回结果(我只为已完成的事件实现了eventhandler,以在这里演示我的问题)

加载操作加载=
_Load(_Context.GetUsersQuery());
加载完成+=(se,ea)=>
MyList.ItemsSource=load.Entities.FirstOrDefault();
如果我在查询中放入where子句,我只会得到一个空列表。where子句应返回1行:)

加载操作加载=
_Load(_Context.GetUsersQuery()。其中(f=>f.UserID==UserID));
加载完成+=(se,ea)=>
MyList.ItemsSource=load.Entities.FirstOrDefault();

任何反馈都将不胜感激

好吧,我认为不可能在RIA服务查询中使用where子句。您需要在服务中实现一个方法,该方法接受UserID并将where子句放在服务中的查询上

以下是一个例子:

public IQueryable GetSuperEmployee(int-employeeID)
{
返回Context.GetEmployees().ToList())
.Where(emp=>emp.EmployeeID==EmployeeID).AsQueryable();
}
根据此

调用RIA服务时,“in”不是有效的语法。但是,您可以构建一个谓词表达式,它完全执行“in”的操作

用法:

var ids = new[] { 10, 20,30};
var inExpression = BuiltInExpression (ids);

EntityQuery<Product> listQuery = 
  ProductContext.GetProductsQuery().Where(inExpression);
varids=new[]{10,20,30};
var表达式=内置表达式(ids);
EntityQuery listQuery=
ProductContext.GetProductsQuery().Where(非表达式);
支持代码:

static Expression<Func<Product, bool>> BuiltInExpression(int[] ids) 
{ 
 var inputExpression = Expression.Parameter(typeof(Product), "input"); 
 var valueExpression = Expression.Property(inputExpression, s_propertyInfo); 
 var inExpression = 
 ids 
 .Aggregate( 
 default(Expression), 
 (acc, v) => 
 { 
  var vExpression = Expression.Constant(v, typeof(int?)); 
  var compareExpression = Expression.Equal(valueExpression, vExpression); 
  if (acc == null) 
  { 
   return compareExpression; 
  } 
  return Expression.OrElse(acc, compareExpression); 
 }); 

 inExpression = inExpression ?? Expression.Constant(true); 
 return Expression.Lambda<Func<Product, bool>>( 
  inExpression, 
  inputExpression 
 );

 return inExpression;

}
静态表达式内置表达式(int[]id)
{ 
var inputExpression=表达式参数(产品类型),“输入”);
var valueExpression=Expression.Property(inputExpression,s_propertyInfo);
变量表达式=
身份证
.合计(
默认值(表达式),
(附件五)=>
{ 
var-vExpression=表达式常数(v,typeof(int?);
var compareeexpression=Expression.Equal(valueExpression,vExpression);
如果(acc==null)
{ 
返回比较表达式;
} 
返回表达式.OrElse(acc,compareExpression);
}); 
无表达式=无表达式??表达式常数(真);
返回表达式。Lambda(
无言,
输入表达式
);
返回不表达;
}

如果employeeID被IList employeeID替换,我想在employeeID中查找所有emp.employeeID,你能告诉我查询结果是什么吗?我希望我的问题很清楚,我想你应该把这个问题作为一个问题,而不是评论来发布。
public IQueryable<SuperEmployee> GetSuperEmployee(int employeeID)
{
    return Context.GetEmployees().ToList()
          .Where(emp => emp.EmployeeID == employeeID).AsQueryable();

}
var ids = new[] { 10, 20,30};
var inExpression = BuiltInExpression (ids);

EntityQuery<Product> listQuery = 
  ProductContext.GetProductsQuery().Where(inExpression);
static Expression<Func<Product, bool>> BuiltInExpression(int[] ids) 
{ 
 var inputExpression = Expression.Parameter(typeof(Product), "input"); 
 var valueExpression = Expression.Property(inputExpression, s_propertyInfo); 
 var inExpression = 
 ids 
 .Aggregate( 
 default(Expression), 
 (acc, v) => 
 { 
  var vExpression = Expression.Constant(v, typeof(int?)); 
  var compareExpression = Expression.Equal(valueExpression, vExpression); 
  if (acc == null) 
  { 
   return compareExpression; 
  } 
  return Expression.OrElse(acc, compareExpression); 
 }); 

 inExpression = inExpression ?? Expression.Constant(true); 
 return Expression.Lambda<Func<Product, bool>>( 
  inExpression, 
  inputExpression 
 );

 return inExpression;

}