C# sql输出只有一个元素

C# sql输出只有一个元素,c#,sql,sql-server,C#,Sql,Sql Server,我正在开发一个c sql系统,正在寻找一种使用output命令获取和删除一个元素的方法。大概是这样的: SqlDataReader reader; string query = "OUTPUT * FROM DATA LIMIT_ONE"; conn.Open(); SqlCommand sqlCommand = new SqlCommand(query, conn); using (reader = sqlCommand.ExecuteReader(){ Order o = Order

我正在开发一个c sql系统,正在寻找一种使用output命令获取和删除一个元素的方法。大概是这样的:

SqlDataReader reader;
string query = "OUTPUT * FROM DATA LIMIT_ONE";
conn.Open();
SqlCommand sqlCommand = new SqlCommand(query, conn);
using (reader = sqlCommand.ExecuteReader(){
    Order o = OrderFromDatabase.buildOrder(reader.GetInt32(2), reader["type"].ToString());
    powershellhandle.ExecutePS(o.getType(), o.getArguments());
 }
conn.Close();
在当前版本中,输出是一个select语句,在alter之后有一个delete,但这似乎效率不高

或者我该怎么做呢

DELETE TOP (1) FROM data OUTPUT DELETED.* 
应该有用。我从来没有试过,所以你的年龄可能会有所不同


查看该页面以获取更多帮助。

有人能解释一下反对票和反对票吗?我环顾四周,没找到任何类似的东西,但也许我只是看错了。反对票很可能是因为你没有任何意义。在T-SQL中不是这样使用的。这就像有人向他们的汽车寻求帮助,把你带到车库,给你看一头水牛,然后问它的化油器出了什么问题。好吧,这是试图重写一个select查询,现在应该删除可能确实有点不清楚的数据。你为什么不把select的where子句放到delete的where子句中呢?您真的需要在删除之前进行选择吗?另外,如果您真的只是将SELECT替换为OUTPUT,为什么SELECT语句要将数据表重命名为LIMIT_ONE?请注意,这几乎是正确的,但它应该是DELETE TOP 1 FROMOUTPUT DELETED.*或者它抱怨围绕“1”的错误。