获取具有相同名字和姓氏的行 ID

发布于 2024-12-05 12:39:00 字数 664 浏览 0 评论 0原文

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");
           }
    }
}
id    fname     lname     role
1     mark      anthony   lead
2     jeff      juarez    manager
3     matthew   gonzales  lead
4     mark      anthony   lead

i have the above table.

now i need to get the id's of all the rows that have same first name and last name.

i tried tbe below solution it is not working

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");
           }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花开雨落又逢春i 2024-12-12 12:39:00

您必须查看名字和姓氏,如下所示:

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]))

You have to look at both first name and last name, like this:

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");
        }
    }

UPDATE - To remove the finding self issue change the if statement like this

if ((array1[0] != array2[0]) && (array1[1] == array2[1]) && (array1[2] == array2[2]))
浅暮の光 2024-12-12 12:39:00

我假设您的意思是,获取名字 = 姓氏的所有 ID(例如“Mark Mark”)。

DataRow[] searchResults = dataTable.Select("fname = lname");

或者,循环

foreach (DataRow dr in dataTable.Select("fname = lname"))
{
     //Do something cool.
}

I am assuming that you mean, get All ID's where the First Name = Last Name (Like "Mark Mark").

DataRow[] searchResults = dataTable.Select("fname = lname");

or, to loop

foreach (DataRow dr in dataTable.Select("fname = lname"))
{
     //Do something cool.
}
为你拒绝所有暧昧 2024-12-12 12:39:00

你也可以尝试这样的事情:

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;

You can also try something like this:

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文