0

我有一个 DataColumns 列表,其中一些具有相同的扩展属性值。我怎样才能获得一个新列表,其中只有所有具有相同扩展属性值的列表?

            DataColumn col = new DataColumn("col1", typeof(string));
            col.ExtendedProperties.Add("Common-Value", "AAA");
            dt.Columns.Add(col);
            DataColumn col = new DataColumn("col2", typeof(string));
            col.ExtendedProperties.Add("Common-Value", "BBB");
            dt.Columns.Add(col);
            DataColumn col = new DataColumn("col3", typeof(string));
            col.ExtendedProperties.Add("Common-Value", "CCC");
            dt.Columns.Add(col);
            DataColumn col = new DataColumn("col4", typeof(string));
            col.ExtendedProperties.Add("Common-Value", "AAA");
            dt.Columns.Add(col);
            DataColumn col = new DataColumn("col1", typeof(string));
            col.ExtendedProperties.Add("Common-Value", "DDD");
            dt.Columns.Add(col);
            DataColumn col = new DataColumn("col1", typeof(string));
            col.ExtendedProperties.Add("Common-Value", "AAA");
            dt.Columns.Add(col);

我想要一个新的 DataColumn 列表,其中包含 Common-Value =“AAA”的所有 DataColumn。在这个例子中计数 = 3

我尝试了此代码,但我希望这不适用于此。

var duplicates = colDataColumns.GroupBy(col => col).SelectMany(grp => grp.Skip(1));
4

1 回答 1

2

要查看具有多个匹配 Common-Value 的项目的组:

var groupsWithDuplicates = colDataColumns.GroupBy(col =>
      col.ExtendedProperties["Common-Value"]).Where(x => x.Count() > 1);

要仅从这些组中获取项目,请添加 a ,如果需要SelectMany,您可以执行 a 。ToList

List<DataColumn> groupsWithDuplicates = colDataColumns.GroupBy(col =>
      col.ExtendedProperties["Common-Value"]).Where(x => x.Count() > 1)
          .SelectMany(x => x).ToList();
于 2013-10-24T16:24:18.897 回答