c# - Linq 查询,其中将 DataTable 的第一列与第二列进行比较以查找重复项

标签 c# linq

我合并了在两列中都包含重复项的 DataTable。

数据表结构:“工号用户名”

1234 John
1235 Mike
1235 Mike
1236 Donald
1236 Jack

我要 catch

1236 Donald
1236 Jack

最好以格式输出

1236 Donald Jack

一段时间以来,我一直在尝试为此目的创建 Linq 查询(相当长的时间),但我想不出正确的方法。

这是我目前所拥有的。这行得通,我刚刚用 dataRow.Field<string>("WORKNUMBER") 测试了列名是否正确:

        public static DataTable ProjectsInLiinos = new DataTable();

        ...

        MainProcess.MergedTable();

        foreach (DataRow dataRow in MainProcess.ProjectsInLiinos.Rows)
        {
                Console.WriteLine(dataRow.Field<string>("WORKNUMBER") + dataRow.Field<string>("USERNAME"));
        }

这是 Linq 查询:

var queryCustomers = from data in MainProcess.ProjectsInLiinos.AsEnumerable()
                                 where data.Field<string>("WORKNUMBER").Count() > 1 && data.Field<string>("USERNAME").Count() < 1
                                 select data;

它不产生任何东西。我不知道如何在第一列重复项与第二列重复项进行比较时发表声明?

否则我可以分组 dataRow.Field<string>("WORKNUMBER") + dataRow.Field<string>("USERNAME")然后检查重复列表,但它会产生:

1235Mike
1235Mike

反过来

1234John
1236Donald
1236Jack

最佳答案

尝试以下操作:

            DataTable dt = new DataTable();
            dt.Columns.Add("Worknumber",typeof(int));
            dt.Columns.Add("Username",typeof(string));
            
            dt.Rows.Add(new object[] {1234, "John"});
            dt.Rows.Add(new object[] {1235, "Mike"});
            dt.Rows.Add(new object[] {1235, "Mike"});
            dt.Rows.Add(new object[] {1236, "Donald"});
            dt.Rows.Add(new object[] {1236, "Jack"});

            var distinct = dt.AsEnumerable()
                .GroupBy(x => x.Field<int>("Worknumber"))
                .Select(x => new { workNumber = x.Key, user = x.Select(y => y.Field<string>("Username")).Distinct().ToList() })
                .Where(x => x.user.Count > 1)
                .Select(x => new { workNumber = x.workNumber, user = string.Join(" ", x.user) })
                .ToList();

关于c# - Linq 查询,其中将 DataTable 的第一列与第二列进行比较以查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63811878/

相关文章:

c# - 防止来自 3rd 方组件的异常使整个应用程序崩溃

c# - Facebook 在不打开 WebBrowser 的情况下注销 Windows Phone 应用程序

linq - LINQ和处理回滚

c# - 使用 Linq 排序,其中列表包含字母和数字

c# - Database.EnsureCreated 不工作

c# - 具有相当于 AutoFixture 'With' 的匿名值的通用 Func 包装

c# - 使用授权属性时的 Cors 策略错误

c# - linq to sql递归查询

c# - 只需一两行即可从 C# 3.5 中的集合中返回最合适的项目

c# - 如何从多个 List<> 中获取所有元素?