【发布时间】:2014-09-08 13:28:58
【问题描述】:
我的 asp.net mvc web 应用程序中有以下 linq 查询:-
Public IQuerable<Technologies> Search (int? isManaged , bool PrimaryCustomerOnly, int?customerID )
{
var technology2 = ITSys.Technologies
.Where(a => (
( !isManaged.HasValue||a.IsManaged == isManaged)
&&
(!PrimaryCustomerOnly && a.ITSysFirewall.FirewallCustomers.Any(a2 => customerID.HasValue && a2.CustomerName.ToLower() == stringcustomerid && relatedresourcesID2.Contains(a.IT360ID.Value)))
));
//code goes here.
}
目前我想在 sql server 2008 存储过程中执行相同的查询。但我无法编写类似于 .Any() 的内容。那么任何人都可以建议我如何编写与.Any()等效的sql吗? 谢谢
【问题讨论】:
-
一个 EXISTS 子句可能是你可以做的最接近的事情。即使它们通常也有其他方法来做到这一点(例如加入/左加入子句)
-
顺便说一句,在不知道 1. 你的表结构 2.
relatedresourcesID2(和其他变量)中的内容的情况下,重写这个查询相当困难。 -
relatedresourcesID2 是一个 IDS 数组,而 stringcustomerid 是 customerid 的字符串表示
-
其他疑问:在
relatedresourcesID2.Contains(a.IT360ID.Value)中你确定你有一个.IT360ID,而不是a2 吗?
标签: sql sql-server linq entity-framework stored-procedures