使用Contains作为';在';Silverlight中实体框架中的LINQ

本文关键字:实体 框架 LINQ Contains 作为 使用 Silverlight | 更新日期: 2023-09-27 18:14:59

我正试图返回一个项目列表(vwProposedMigrations(,其中vwPropisedMigrations的部门代码为IN用户有权管理的部门列表。

result包含部门代码字符串的列表。这些已通过早期的entityQuery加载并正确返回。

var result = (from r in wtps.Schedule_Owner_DeptCode_Mappings select r.DeptCode).ToList();
var data = wtps.GetVwProposedMigrationsQuery().Where(x=>result.Contains(x.DepartmentCode));
LoadOperation dataLoad = wtps.Load<vwProposedMigration>(data);
dataLoad.Completed += new EventHandler(LoadvwProposedMigrationsOperation_Completed);

但是收到这个错误:

不支持类型为"System.Collections.Generic.List 1[System.String]' cannot be serialized as part of the query. 'System.Collections.Generic.List 1[System.String]"的值类型

我曾尝试使用ObservableCollectionstring[]来保存部门代码列表,但出现了相同的问题。我见过很多使用Contains的例子,但这些例子在数据加载后对其进行操作,而不是限制初始查询。

我试图避免加载vwProposedMigrations的整个结果集,因为它大约有38000行,所以我的目标是将查询限制在用户感兴趣的行。

谢谢米克

使用Contains作为';在';Silverlight中实体框架中的LINQ

请检查此

var data = wtps.GetVwProposedMIgrationsQuery().Where(x=>result.Any(z=>z.DepartmentCode == x.DepartmentCode))

检查此项:

  var result = (from r in wtps.Schedule_Owner_DeptCode_Mappings select r.DeptCode);
  var data = wtps.GetVwProposedMigrationsQuery().Where(x=>result.Contains(x.DepartmentCode));