0

dtという名前のDataTableから特定の行を削除したい。

SQLのテーブルの場合、次のようなことができます。

DELETE FROM dt 
WHERE BASELINE_FOLDER = baselineSubfolder
AND BASELINE_FILE = baselineFilename
AND BASELINE_CHECKSUM = baselineChecksum;

これに相当するLINQステートメントはありますか?

4

2 に答える 2

2

あなたがモデルを持っておらず、DataTable(これは私がOPから理解していることです)だけを持っていると仮定します。

//Cast to enumerable of `DataRow` and filter on your condition
var rows = dt.Rows.Cast<DataRow>().Where(row => row["BASELINE_FOLDER"] == baselineSubFolder && row["BASELINE_FILE" == baselineFilename
&& row["BASELINE_CHECKSUM"] == baselineChecksum).ToArray();
//Loop through and remove the rows that meet the condition
foreach(DataRow dr in rows)
{
  dt.Rows.Remove(dr);
}
于 2013-03-20T15:36:01.683 に答える
0

データテーブルをリストに変換し、それを使用RemoveAt()して行うことができます。

リストに変換して、以下のコードを使用できます

string baseLineFolder=dt.Rows["BASELINE_FOLDER"].ToString();
                string baseLineFile=dt.Rows["BASELINE_FILE"].ToString();
                string baseLineChecksum=dt.Rows["BASELINE_CHECKSUM"].ToString();
                var dtresult = dt.AsEnumerable();
                var result=(from r in dtresult
                            where(r.Field<string>("BASELINE_FOLDER")!=baseLineFolder)
                            &&(r.Field<string>("BASELINE_FILE")!=baseLineFile)
                            &&(r.Field<string>("BASELINE_CHECKSUM ")!=baseLineChecksum)
                              select r).ToList();
于 2013-05-30T08:53:16.247 に答える