id fname lname role
1 mark anthony lead
2 jeff juarez manager
3 matthew gonzales lead
4 mark anthony lead
我有上表。
现在我需要获取所有具有相同名字和姓氏的行的ID。
我尝试了下面的解决方案它无法正常工作
foreach (DataRow row1 in dataTable.Rows)
{
foreach (DataRow row2 in dataTable.Rows)
{
var array1 = row1.ItemArray;
var array2 = row2.ItemArray;
if (array1[1] == array2[1])
{
Console.WriteLine("Equal");
}
else
{
Console.WriteLine("Not Equal");
}
}
}
答案 0 :(得分:3)
您必须同时查看名字和姓氏,如下所示:
foreach (DataRow row1 in dataTable.Rows)
foreach (DataRow row2 in dataTable.Rows)
{
var array1 = row1.ItemArray;
var array2 = row2.ItemArray;
if ((array1[1] == array2[1]) && (array1[2] == array2[2]))
{
Console.WriteLine("ID#" + array1[0].ToString() + " is equal to ID#" + array2[0].ToString());
}
else
{
Console.WriteLine("Not equal");
}
}
更新 - 要删除查找自我问题,请更改if语句
if ((array1[0] != array2[0]) && (array1[1] == array2[1]) && (array1[2] == array2[2]))
答案 1 :(得分:0)
我假设你的意思是,获得所有ID的名字=姓氏(如“Mark Mark”)。
DataRow[] searchResults = dataTable.Select("fname = lname");
或循环
foreach (DataRow dr in dataTable.Select("fname = lname"))
{
//Do something cool.
}
答案 2 :(得分:0)
你也可以尝试这样的事情:
var result = from dt in dataTable.AsEnumerable()
group dt by new { FirstName = dt.Field<string>("FirstName"), LastName = dt.Field<string>("LastName")} into g
where g.Count() > 1
select dt.id;