gpt4 book ai didi

c# - 参数化 LINQ GroupBy

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:52 25 4
gpt4 key购买 nike

以下 C# 代码采用一个包含许多列的大型数据表和一个包含 2 个列名的数组。它将提供一个包含两行的新数据表,其中提供的员工编号和技能的两个字段有重复的行。这太具体了,我需要提供任意数量的字段作为 groupby。有人可以帮助我吗?

string[] excelField = new string[0]; // contains a list of field name for uniquness
excelField[0] = "staff No";
excelField[1] = "skill";
DataTable dataTableDuplicateRows = new DataTable();
dataTableDuplicateRows.Clear();
dataTableDuplicateRows.Columns.Clear();

foreach (string fieldName in excelField)
{
dataTableDuplicateRows.Columns.Add(fieldName);
}

var duplicateValues = dataTableCheck.AsEnumerable()
.GroupBy(row => new { Field0 = row[excelField[0]], Field1 = row[excelField[1]] })
.Where(group => group.Count() > 1)
.Select(g => g.Key);

foreach (var duplicateValuesRow in duplicateValues)
{
dataTableDuplicateRows.Rows.Add(duplicateValuesRow.Field0, duplicateValuesRow.Field1);
}

最佳答案

我认为您需要的是使 linq 更加动态的东西,即使您可以通过使用表达式树来实现它,DynamicLinq 库似乎可以更轻松地解决您的问题。

对于您的情况,对于库,只需使用带有字符串值的 GroupBy 扩展方法。有关 DynamicLinq 库的更多信息:

Scott Gu's blog

关于c# - 参数化 LINQ GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com