【问题标题】:Return grouped data from method从方法返回分组数据
【发布时间】:2014-05-13 06:28:23
【问题描述】:

我有一个方法需要返回一个组,即:

public static MyData BinSearch(MyData searchDate)
{
 // First doing a binary search to get the index

 if (index >= 0)
        {
            return recordList[index];
        }

        index = ~index;

        if (index == 0 || index == recordList.Count)
        {
            return null;
        }

        int newIndex = (((index-1)+index)/2)+1;
        string pointer = recordList[newIndex].TaxDet;

        var groupData = recordList.GroupBy(p => p.TaxDet)
                      .ToDictionary(g => g.Key);

        var output = groupData[pointer];


        return (output); // Here I want to return a group of data
 }

但我收到一个错误:

不能隐式转换类型 'System.Linq.IGrouping' 到 'ConsoleApplication1.MyData'。存在显式转换(您是 缺少演员表?)

编辑:

public class MyData
    {
        public string TaxDet{ get; set; }
        public string empDetails { get; set; }
    }

【问题讨论】:

  • MyData 是什么类型?

标签: c# .net windows linq collections


【解决方案1】:

由于您将GroupByToDictionary 组合在一起,因此通过执行groupData[pointer],您将从字典中获得价值,即IGrouping。如果需要从分组中提取数据,还需要1个索引getter groupData[pointer][taxDet]

在这种情况下.ToDictionary(g => g.Key); 可能是多余的

【讨论】:

  • 我在 var 'Output' 中得到了正确的结果,但是现在我需要将此结果(这是一个组)从我调用的地方返回到我的 main 中。我无法退货
  • 这里的组是什么意思?如果您要返回整个组,那么您的方法返回类型不正确。它应该类似于 public static IGrouping BinSearch(MyData searchDate)
  • 谢谢,那应该怎么做呢:我的调用函数为:MyData pointNetcom = BinSearch(value);
  • 我猜你不需要从 BinSearch 返回 IGrouping。请解释您在 BinSearch 方法中尝试执行的操作。乍一看,您不需要调用 ToDictionary 方法,因为 GroupBy 已经按指定键对项目进行分组。再次从分组键中创建字典是没有意义的
  • 在这种方法中,当我得到那个键/记录时,我正在搜索。然后我想去那个键并获取键以及它的记录,这将是一个组并将这些记录发送回调用者(主)。
猜你喜欢
  • 1970-01-01
  • 2014-12-14
  • 2013-01-02
  • 1970-01-01
  • 2019-07-20
  • 2021-11-25
  • 2014-11-20
相关资源
最近更新 更多