【问题标题】:How to do same without Extension Method如何在没有扩展方法的情况下做同样的事情
【发布时间】:2021-07-08 12:52:38
【问题描述】:

我有一个程序可以在控制台窗口上以 XML 格式显示输出,它运行得非常好,没有任何错误,但我正在使用扩展方法来完成这项工作。如何在不使用扩展方法的情况下做到这一点,我有一个提示,我只需将一行从扩展类移动到程序类,但作为一个新程序员,我失败了,需要你的帮助。

这是我的主类

List<int> email = new List<int>() { 60, 50, 70, 30, 80, 65, 90, 75, 55 };

        var element = new XElement("Results",
            email.Batch(3)
                 .Select(batch =>
                     new XElement("Result",
                                  batch.Select(mark => new XElement("Mark", mark)),
                                  new XElement("Total", batch.Sum()))));
        Console.WriteLine(element);



        Console.ReadLine();

这是我的扩展方法类

 public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> items,
                                                  int maxItems)
    {
        return items.Select((item, inx) => new { item, inx })
                    .GroupBy(x => x.inx / maxItems)
                    .Select(g => g.Select(x => x.item));
    }

【问题讨论】:

  • this 是关于扩展方法和非扩展方法之间区别的提示
  • 在代码中有很多不同的方法来做事,所以很难回答你的问题。如果您解释一下您对当前实施不满意的原因,也许会有所帮助。
  • 有什么问题,具体来说,您是否将代码移出扩展方法?
  • @Crono 我对我的代码很满意,但作为一个学习者,我只想用不同的技术来实现代码,现在我只想在没有扩展方法的情况下做到这一点

标签: c# linq console-application extension-methods


【解决方案1】:

如果我理解正确,您是在询问如何将您的扩展代码移动到您的调用代码中。下面是它的样子:

        List<int> email = new List<int>() { 60, 50, 70, 30, 80, 65, 90, 75, 55 };

        var element = new XElement("Results",
            email
                .Select((item, inx) => new { item, inx })
                .GroupBy(x => x.inx / 3)
                .Select(g => g.Select(x => x.item))                
                .Select(batch =>
                    new XElement("Result",
                        batch.Select(mark => new XElement("Mark", mark)),
                        new XElement("Total", batch.Sum())
                    )
                )
        );
        Console.WriteLine(element);
        Console.ReadLine();

【讨论】:

  • 对不起,我有一些家庭紧急情况,是的,这正是我所要求的,但是省略了批处理功能,您的代码对我来说很好,但是我们如何使用批处理功能使用相同的代码
  • @Zong 恐怕我不太了解。您最初的问题是如何使用您的 Batch 扩展方法不做到这一点。现在您想知道如何使用扩展方法吗? ?
猜你喜欢
  • 1970-01-01
  • 2014-03-03
  • 2012-09-08
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 2015-03-24
相关资源
最近更新 更多