- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个办公室 ID 数组,该数组可能为空。如果 officeIdsToSelect 数组为空,我希望 EF 查询返回所有 记录,或者如果不为空,则仅返回匹配的记录。然而这:
int[] officeIdsToSelect = new int[] { 1, 2, 3 };
Office[] selectedOffices = (from item in new TdsDb().Offices
where (officeIdsToSelect == null || officeIdsToSelect.Contains(item.OfficeID))
select item).ToArray();
抛出异常:
System.NotSupportedException : Cannot compare elements of type 'System.Int32[]'. Only primitive types (such as Int32, String, and Guid) and entity types are supported.
具体来说,Linq to Entities 反对 officeIdsToSelect == null
。我明白它在说什么(更清晰的 EF 错误消息之一...)
那么我怎样才能在这里得到我想要的东西呢?
最佳答案
EF 无法翻译 officeIdsToSelect == null
到 SQL。
另一方面,EF 足够聪明来翻译 officeIdsToSelect.Contains(item.OfficeID)
至 WHERE OfficeID IN (1, 2, 3)
.
所以基本上,你可以简单地做:
Office[] selectedOffices;
if (officeIdsToSelect == null)
{
selectedOffices = new TdsDb().Offices.ToArray();
}
else
{
selectedOffices = (from item in new TdsDb().Offices
where officeIdsToSelect.Contains(item.OfficeID)
select item).ToArray();
}
编辑:
如果您的实际查询更复杂并且您不想重复它,您可以做的是有条件地添加一个 Where
条款取决于您的 int
的值(value)数组。
// Here's a query that is NOT YET executed (deferred execution)
var query = (from item in new TdsDb().Offices
...... your whole complicated request here
select item);
// Conditionnally adds a where clause if required
if (officeIdsToSelect != null)
{
// Still not yet executing the query. We're just building the query for now
query = query.Where(z => officeIdsToSelect.Contains(z.OfficeID));
}
// OK, now executes the query and get the results
Office[] selectedOffices = query.ToArray();
if the conditional Where doesn't overwrite the original Where clause; but is addative
是的,这就是 LINQ to Entities 的强大之处:流畅的编程和延迟执行。
流畅的编程意味着您可以链接 方法,这要归功于 IQueryable
的 LINQ 是可能的扩展方法。
例如, IQueryable<T>.Where(...)
还返回 IQueryable<T>
目的。它在内部向查询添加一个谓词,然后返回您指定为参数的查询。
另一个重要的部分是延迟执行。这允许在实际请求数据之前不执行查询。只有当您真正需要数据时,请求才会针对您的数据库实际执行。在上面的示例中,它是 .ToArray()
实际执行查询的命令。
参见 this nice MSDN article有关查询执行机制的详细信息。
关于c# - "where"条款 : entity id is in a potentially null array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16593257/
我的文件示例: [ { username: 'userA', action: 'click', page: 'home' }, { username: 'u
在 AgdaIntro 中, View 部分解释了: ..that with doesn’t remember the connection between the with-term and the
似乎 In 子句在 Linq 3.0 (trunk) 中不能正常工作 我尝试了以下操作: var l = session.Query.Where(p => searchGroups.Contains(
我想在kibana中创建一个可视化效果,以显示不同数据的平均值。我已经创建了显示在日志中的字段,并且还执行了管理->索引模式->刷新。 现在,当我尝试以可视化方式创建图表时-> e.x(条形图)->汇
想象以下搜索词“棕狐”。 所有文档确实都有另一个字段,称为备用名称。 该字段有时包含诸如“动物”或“狐狸”之类的漂亮术语。有时它包含“不好的”(或人类可读的)术语,例如ED2314或1231-234-
我正在尝试使用 Z3 的 HORN 逻辑(set-logic HORN)对一些命令式程序进行编码,但在定义子句时遇到一些困难(使用 SMT2)。谁能告诉我在哪里可以找到有关 Z3 的此功能的良好文档来
我有一个办公室 ID 数组,该数组可能为空。如果 officeIdsToSelect 数组为空,我希望 EF 查询返回所有 记录,或者如果不为空,则仅返回匹配的记录。然而这: int[] office
我正在使用 ark 从 oracle 下载中下载 jdk7u51。 ark 'jdk' do url 'http://download.oracle.com/otn/java/jdk/7u51-
我正在处理一个项目(其他人的代码),其中一个方法被声明为抛出一堆它不可能抛出的已检查异常。 基本上,该方法如下所示: // Assume E1 extends Exception // Assume
所以,我想我理解级联文件系统的基本术语,但我似乎无法理解 MVC 的“层次结构”。谁能告诉我使用 HMVC 相对于 MVC 的优势以及它的基本预期功能吗? 感谢您的宝贵时间! 最佳答案 HMVC 更适
在C++ draft standard N3337节[expr.const.cast]/8 : The following rules define the process known as cast
我是一名优秀的程序员,十分优秀!