如果您可以使用类似ORM的实体框架。然后使用Linq to实体,您可以组合多个.Where语句,在执行时,这些语句将转换为sql语句。这允许您在执行实际查询之前创建和组合筛选器。无论您的筛选要求有多复杂,sql和c#代码都将变得非常简单,如果您只是像分隔多
如果您可以使用类似ORM的实体框架。然后使用Linq to实体,您可以组合多个.Where语句,在执行时,这些语句将转换为sql语句。这允许您在执行实际查询之前创建和组合筛选器。无论您的筛选要求有多复杂,sql和c#代码都将变得非常简单,如果您只是像分隔多,c#,sql-server,C#,Sql Server,如果您可以使用类似ORM的实体框架。然后使用Linq to实体,您可以组合多个.Where语句,在执行时,这些语句将转换为sql语句。这允许您在执行实际查询之前创建和组合筛选器。无论您的筛选要求有多复杂,sql和c#代码都将变得非常简单,如果您只是像分隔多个where子句那样分隔where子句(在and之间),那么您的查询将更加高效。在临时表上有一堆子查询几乎肯定不是正确的解决方案。 SELECT * FROM People WHERE LastName = 'Bond' SELECT * FR
如果您可以使用类似ORM的实体框架。然后使用Linq to实体,您可以组合多个.Where语句,在执行时,这些语句将转换为sql语句。这允许您在执行实际查询之前创建和组合筛选器。无论您的筛选要求有多复杂,sql和c#代码都将变得非常简单,如果您只是像分隔多个where子句那样分隔where子句(在and之间),那么您的查询将更加高效。在临时表上有一堆子查询几乎肯定不是正确的解决方案。
SELECT * FROM People WHERE LastName = 'Bond'
SELECT * FROM [whatever was returned from above] WHERE FirstName = 'James'
SELECT * INTO #MyTempTable FROM People WHERE LastName = 'Bond'
SELECT * FROM #MyTempTable WHERE FirstName = 'James'
LastName = 'Bond'
FirstName = 'James'
var results = GetData(initialfilter);
results = results.Where( additionalFilter );
results = results.Where( thirdFilter );
SELECT * FROM (SELECT * FROM table2 WHERE LastName = 'Jones') WHERE FirstName = 'Bob'
private string BuildMyQuery(List<string> myStatements)
{
// myHoldingTable1 will always contain the last result
var sb = new StringBuilder();
sb.AppendLine("DECLARE @myHoldingTable1 TABLE (Id int, Value1 varchar(100), ...);");
sb.AppendLine("DECLARE @myHoldingTable2 TABLE (Id int, Value1 varchar(100), ...);");
sb.AppendLine("INSERT INTO @myHoldingTable1 (Id, Value1 ....) SELECT id, value1... from myInitialTable;");
foreach(var myStatement IN myStatements)
{
sb.AppendLine($"INSERT INTO @myHoldingTable2 (Id, Value1 ....) myStatement;");
sb.AppendLine("DELETE FROM @myHoldingTable1;");
sb.AppendLine("INSERT INTO @myHoldingTable1 (Id, Value1 ....) SELECT id, value1... from @myHoldingTable2;");
sb.AppendLine("DELETE FROM @myHoldingTable2;");
}
sb.AppendLine("SELECT * FROM @myHoldingTable1;");
return sb.ToString();
}