【发布时间】:2020-09-09 12:39:33
【问题描述】:
我已合并在两列中都包含重复项的 DataTable。
DataTable 结构:“Worknumber 用户名”
1234 John
1235 Mike
1235 Mike
1236 Donald
1236 Jack
我要赶上
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
【问题讨论】:
-
通常在这种情况下,您会按重复列分组。然后你会得到这个分组键的所有值,就像你想要的输出一样
-
你想要怎样的输出?在匿名类型中?自定义类?