2015-05-08 63 views
0

在下面的代碼中,我想比較兩個數據集列的值,但它不匹配,那麼也獲得這個條件true.so如何真正比較?如何比較C#中的兩個DataSet列值?

if (dsEmp.Tables[0].Columns["EmpName"].ToString() == dsAllTables.Tables[2].Columns["EmpName"].ToString()) 
{ 

} 
+0

你看過調試模式嗎?你正確地使用字符串,我沒有看到代碼本身存在問題。 –

+0

我們不知道這些數據是什麼......如果您能提供一個簡短但完整的程序來展示問題,它將會*真的*有幫助。這也不清楚你的意思是「但它不匹配,然後也得到這個條件」。 –

+0

試試這個http://stackoverflow.com/a/27637300/4513879 –

回答

2

你比較兩個列名,所以"EmpName""EmpName"這總是如此。 Tables[0].Columns["EmpName"]返回帶有該名稱的DataColumnToString返回該列的名稱,即"EmpName"。所以這沒有意義。

如果你不是想知道,如果兩個表包含在他們的行LINQ的,你可以使用一個相同的EmpName值:

var empRowsEmpName = dsEmp.Tables[0].AsEnumerable().Select(r => r.Field<string>("EmpName")); 
var allRowsEmpName = dsAllTables.Tables[2].AsEnumerable().Select(r => r.Field<string>("EmpName")); 
IEnumerable<string> allIntersectingEmpNames = empRowsEmpName.Intersect(allRowsEmpName); 
if (allIntersectingEmpNames.Any()) 
{ 

} 

現在,你甚至不知道哪些EmpName值包含兩個表所示。你可以使用一個foreach -loop:

foreach(string empName in allIntersectingEmpNames) 
    Console.WriteLine(empName); 

如果你想找出一個特定的值包含在這兩個:

bool containsName = allIntersectingEmpNames.Contains("SampleName"); 

如果你只是想獲得的第一個匹配:

string firstIntersectingEmpName = allIntersectingEmpNames.FirstOrDefault(); 
if(firstIntersectingEmpName != null){ 
    // yes, there was at least one EmpName that was in both tables 
} 
+0

哇,它的偉大工作..很多than.m M.r Tim Schmelter。但這是爲了兩者都是平等的條件,那麼如何採取不平等的條件? –

+0

@dawoodabbas:所有'EmpName'都在第一個表中,但不在第二個?你可以使用'empRowsEmpName.Except(allRowsEmpName)',反之亦然。 –

+0

錯誤運算符'&&'不能應用於'bool'類型的操作數和'System.Collections.Generic.IEnumerable ' –

1

如果你有一個單列,這應該工作:

if (dsEmp.Tables[0].Row[0]["EmpName"].ToString() == dsAllTables.Tables[2].rows[0]["EmpName"].ToString()) 
{ 

} 

對於多行,你必須遍歷表:

for (int i = 0; i <= dsEmp.Tables[0].Rows.Count; i++) 
{ 
    for (int j = 0; j <= dsAllTables.Tables[0].Rows.Count; j++) 
    { 
     if (dsEmp.Tables[0].Rows[i]["EmpName"].ToString() == dsAllTables.Tables[2].Rows[j]["EmpName"].ToString()) 
     { 

     } 
    } 
} 
+0

請檢查我已編輯的答案sir – Dhaval

+0

Tim的答案比較好,但你仍然可以保持我的第一個意識到問題所在。 –

+0

ty @ZoharPeled .. !! – Dhaval