C# SQL如果还有

C# 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

如何将此linq代码转换为sql

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)