【问题标题】:How to show the scale number between 1-23如何显示1-23之间的刻度数
【发布时间】:2019-10-13 15:15:36
【问题描述】:

我想显示从 1 到 23 的数字刻度。目前,我有如下图所示的数据,

如果数字等于 1 = 总共有 40 个,并且我想添加比例编号,如果数字没有任何数据,它将返回默认 0。如何添加该比例编号?

  public List<NumberModel> GetHourTime(Number model)

    {
        var result = new List<NumberModel>();

    int[] values = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};

    var hours = this.Context.XNumbers).Where(x => (string.IsNullOrEmpty(model.Code))).Select(x => x);

    result = hours.ToList().ToNumberModels().OrderBy(x => x.Hour)
         .GroupBy(x => x.Hour)
         .Select(x => new XNumber
         {
             Total = x.Sum(item => item.Total),
             Hour = x.Key 
    }).AsEnumerable().Take(30).ToList();

    return result;

     }

预期的结果会是这样的

1=40,
2=0,
3=23,
4=0,
5=0,
6=12,
7=0
........

以此类推...直到 23 日

这里是 NumberModel 类

 public class NumberModel
{
    public Guid Id { get; set; }
    public int Total { get; set; }
    public int Hour { get; set; }
}

【问题讨论】:

  • 您的代码有语法错误。还请提供XNumbersNumber 类的示例实现,以及调用GetHourTime()方法的代码。
  • 我成功得到结果,但它没有显示1-23的比例,它只显示在数据库中
  • 你永远不需要像values 这样创建一个数组。查找“for”循环的语法并使用一个。
  • 你能给我举个例子吗? @iakobski
  • 当然,我必须把它放在格式化的答案中

标签: c# database int


【解决方案1】:

当您编写一个连续数字列表作为程序的一部分时,警钟应该会响起。让电脑为你做这件事。一个简单的for 循环就可以了。

我不清楚你的数据模型,但是一旦你得到了NumberModel 的列表,你可以像这样以你想要的格式输出它们:

var data = new List<NumberModel>
{
    // Sample data
    new NumberModel{Hour=1,Total=40},
    new NumberModel{Hour=3,Total=23},
    new NumberModel{Hour=6,Total=12}
};
for (int i=1; i<=23; ++i)
{
    Console.Write($"{i}=");
    Console.WriteLine (data.Any(x => x.Hour==i)
        ? data.First(x => x.Hour==i).Total
        : 0);
}

输出:

1=40
2=0
3=23
4=0
5=0
6=12
7=0
8=0
...

【讨论】:

  • 我仍然配置我如何在我的代码的 LINQ 中应用
  • 正如@[Corentin Pane] 一开始所说的那样,如果不知道modelXNumbersGetHourTime() 等,没有人可以帮助回答这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多