我有兩個數據集,我從Access數據庫的兩個表中讀取數據。我希望能夠通過EXPRESSION匹配數據,以便保持所有匹配的「SN」,並去除那些沒有匹配的數據。到目前爲止,我的代碼保留了所有的「SN」。這是,從查詢中獲取匹配,但不保留其他任何東西
con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filePath);
con3 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filePath);
if ((string)comboBox1.SelectedItem == "CGA0112")
{
try
{
string end = "ENDDATE";
string qual = "CGA0112";
string start = "START";
ad.SelectCommand = new OleDbCommand("SELECT b.RSV_CAT, b.SEQNUM, b.LEASE,
b.WELL_ID, a.QUALIFIER, a.KEYWORD, a.EXPRESSION
FROM [AC_ECONOMIC] a INNER JOIN [AC_PROPERTY] b
on a.PROPNUM=b.PROPNUM WHERE a.KEYWORD = '" +end+ "'
AND a.QUALIFIER = '" +qual+ "' AND a.EXPRESSION LIKE 'SN%'", con);
ds.Clear();
ad.Fill(ds);
con.Open();
ad.SelectCommand.ExecuteNonQuery();
con.Close();
ad3.SelectCommand = new OleDbCommand("SELECT b.RSV_CAT, b.SEQNUM, b.LEASE,
b.WELL_ID, a.QUALIFIER, a.KEYWORD, a.EXPRESSION
FROM [AC_ECONOMIC] a INNER JOIN [AC_PROPERTY] b
on a.PROPNUM=b.PROPNUM
WHERE a.KEYWORD = '" + start + "' AND a.QUALIFIER = '" +
qual + "' AND a.EXPRESSION LIKE 'SN%'", con3);
ds3.Clear();
ad3.Fill(ds3);
ds.Merge(ds3); //merges the two datasets together
win1.frm1 = this;
win1.Show();
con3.Open();
ad3.SelectCommand.ExecuteNonQuery();
con3.Close();
}
我在想,如果有一個可能解決這一所以只保留匹配的表達。任何幫助深表感謝。謝謝。
而不是合併數據集,你可以使用LINQ Join對行集合嗎? –
@CjS。我不知道我會如何去做這件事。 – Stick
我添加了一個例子作爲答案。應該讓你相當接近。 –