我有一个表适配器,可以在我的数据库中搜索并返回StatusValue == false
行。
现在我要删除这些行。我怎么能在C#中做到这一点?
我在c#中的代码:
DataSet.TableDataTable TableDT = new DataSet.TableDataTable();
DataSetTableAdapters.TableTableAdapter TableTA = new DataSetTableAdapters.TableTableAdapter();
TableTA.FillByUserStatus(TableDT, false);
// Here I want to delete rows in my database by IDs;
我的SQL代码:
CREATE TABLE [dbo].[Table]
(
[UserID] INT IDENTITY (1, 1) NOT NULL,
[firstname] NVARCHAR (50) NOT NULL,
[lastname] NVARCHAR (50) NOT NULL,
[field] NVARCHAR (50) NOT NULL,
[number] NCHAR (20) NOT NULL,
[email] NCHAR (50) NULL,
[Ordered Amount] INT NOT NULL,
[Description] NVARCHAR (MAX) NOT NULL,
[ReservationStatus] BIT NOT NULL,
PRIMARY KEY CLUSTERED ([UserID] ASC)
);
答案 0 :(得分:0)
由于您拥有数据表,因此很容易删除行
DataTable dt = new DataTable();
//Fill the data table with rows
var rows = dt.DefaultView;
rows.RowFilter = "your condition";
for (var i = 0; i <= rows.Count - 1; i++)
{
dt.Rows.Remove(rows[i].Row);
}
如果您使用EF,使用LINQ从C#中可以轻松实现。要查找表中的所有列,您需要知道表元数据。
答案 1 :(得分:0)
正如CodingYoshi在评论中所说,将行加载到表中并逐个删除是没有意义的。那将是指数性的慢。将命令传递给数据库,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_pranet"
android:visibility="visible">
</android.support.v4.view.ViewPager>
</LinearLayout>
</ScrollView>
</LinearLayout>
如果你有时间,我建议你阅读ORM和存储过程。