C# SQL如果还有
如何将此linq代码转换为sqlC# SQL如果还有,c#,sql,linq,C#,Sql,Linq,如何将此linq代码转换为sql if (storeId > 1) { query = from p in query where (p.StoreId == storeId) select p; } 如果storeId>1,我不想在SQL中进行WHERE比较 更新 以下是我希望在SQL中执行的操作: SELEC
if (storeId > 1)
{
query = from p in query
where (p.StoreId == storeId)
select p;
}
如果storeId>1,我不想在SQL中进行WHERE比较
更新
以下是我希望在SQL中执行的操作:
SELECT * FROM test
WHERE (
(test.city = @city)
AND
(test.price = @price)
AND
(
IF (@storeId > 1)
test.storeId = @storeId
ELSE
do not do anything
)
)
试一试
查看您的代码,如果storeId>1,您似乎希望检索特定的storeId记录。我还假设您的意思是,如果我不理解storeId,您不需要where子句。。。如果您只是想将其转换为SQL,为什么不运行它并查看执行的是什么SQL?你是什么意思?@Mark-我想OP希望在他的SQL查询中包含outer if子句。上面的代码生成的LINQ查询不包括这一点。您似乎自相矛盾:您提供的代码似乎执行了一个包含WHERE claue的查询,确切地说,when storeId>1。还是我遗漏了什么?你能把你的意图说清楚吗?我看了你的更新后更新了我的答案。希望有帮助!
var queryresult = from p in query
where ((p.StoreId == storeId) && (storeId > 1))
|| (storeId <= 1)
select p;
Select * from p where p.storeid = @storeid or @storeid > 1
Select * from p where (@storeId > 1 and p.storeId = @storeId) or @storeId <= 1
SELECT * FROM test WHERE test.city = @city AND test.price = @price
AND ((@storeId > 1 AND test.storeId = @storeId) or @storeId <=1)
SELECT * FROM test WHERE test.city = @city AND test.price = @price
AND (@storeId > 1 AND test.storeId = @storeId)