首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用linq创建所需的组数(没有时间、时间、时间)

使用linq创建所需的组数(没有时间、时间、时间)
EN

Stack Overflow用户
提问于 2021-06-01 12:45:39
回答 1查看 49关注 0票数 0

我有一个这样的任务:写一个LINQ表达式,显示在上个世纪的每十年里印刷了多少本书。答案应该是一个具有属性的对象序列:d-十年数(1,2,. 10),C-图书数。你也不能用时间,因为,你不能用。

有一门课

代码语言:javascript
复制
class Book {
    public string Title { set; get; }
    public int Year { set; get; } }

还有一堆书-- books

一开始我是这样做的:

代码语言:javascript
复制
var g = books.GroupBy(b => b.Year % 100 == 0 ? (b.Year == 1900 ? 1 : 10) : (b.Year % 100 - 1) / 10 + 1,
        b => b.Year,
        (decade, years) => new
        {
            D = decade,
            C = years.Count()
        });

但这只是为现有的几十年从集合创建组,然后我意识到必须有10个组的D值为1到10。我尝试这样做,但没有循环,它对我不起作用。你能告诉我如何在团购中实现这一点吗?因为任务与linq的介绍有关,但我无法正确地理解它。

抱歉英语不太好

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-01 13:24:15

那么,我们可以创建所有的10十年(确保每一个十年都存在于答案中,即使其中没有印刷书籍)

代码语言:javascript
复制
Enumerable.Range(0, 10)

然后Count里面的书。因此,给定一个集合,枚举books

代码语言:javascript
复制
  IEnumerable<Book> books = ...

  var result = Enumerable
    .Range(0, 10)
    .Select(D => new { 
      D = D + 1,
      C = books.Count(book => book.Year >= 1900 + D * 10 && 
                              book.Year < 1900 + (D + 1) * 10)
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67789131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档