【问题标题】:Parameterise LINQ GroupBy参数化 LINQ GroupBy
【发布时间】:2014-02-20 12:21:40
【问题描述】:

以下 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);
}

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:

    我认为您需要的是使 linq 更具动态性,即使您可以通过使用表达式树来实现它,DynamicLinq 库似乎会以更简单的方式解决您的问题。

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

    Scott Gu's blog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2020-01-09
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多