如果我有以下查询在哪里Companies.Name
加密:
显然执行以下查询将是无效的,因为我们正在搜索加密名称。
IQueryable<File> files = GetFiles(f => f.Clients.Any(fc => fc.Contacts.Any(c => c.Companies.Any(x => x.Name.Contains(searchText)))));
在通过我们已有Companies.Name
的函数执行查询之前,我正在寻求一种解密方法。Decrypt()
编辑1:
我确实有一个Company
带有解密属性的部分类,DisplayName
它返回解密的Name
属性,但是 LINQ 告诉我指定的类型成员DisplayName
在 LINQ to Entities 中不受支持。仅支持初始化程序、实体成员和实体导航属性。
IQueryable<File> files = GetFiles(f => f.Clients.Any(fc => fc.Contacts.Any(c => c.Companies.Any(x => x.DisplayName.Contains(searchText)))));
如果有办法在 LINQ 语句中使用部分类属性,我想它会起作用。
编辑2:
我最终创建了一个解密公司名称的 SQL CLR 函数,现在我可以调用dataContext.SearchCompanies(searchText)
代码来返回一个Companies
.
但是,我不确定如何Companies
在原始列表中轻松替换?