gpt4 book ai didi

c# - 列表以间隔返回特定字段的值

转载 作者:太空狗 更新时间:2023-10-29 23:44:31 26 4
gpt4 key购买 nike

我正在使用大量数据实现 Telerik Chart。图表 x 轴上的标签重叠。我已经克服了这个问题,但从长远来看它并不可靠。

这些是列表的字段:

FieldName                DataType
Date DATETIME
DateString STRING
Unit DOUBLE
Price DOUBLE

X轴标签值来自DateString字段

我实现的解决方案

  1. MIN 和 MAX 日期 DateString 字段将始终返回。
  2. 对于其余部分,返回工作日为“星期一”的那些值

这是代码-

// Get min and max Date
DateTime minDate = DateTime.Now;
DateTime maxDate = DateTime.Now;
if (dtGas.Rows.Count > 0)
{
minDate = Convert.ToDateTime(dtGas.Compute("MIN([Date])", ""));
maxDate = Convert.ToDateTime(dtGas.Compute("MAX([Date])", ""));
}
// Group by 'Date' and 'DateString' | 'SUM' of Unit and 'Price'
var qGas = from x in dtGas.AsEnumerable()
group x by new
{
Date = x.Field<DateTime>("Date"),
DateString = x.Field<string>("DateString")
} into egroup
let isOne = egroup.Key.Date.DayOfWeek.ToString() == "Monday"
select new
{
Date = egroup.Key.Date,
DateString = minDate == egroup.Key.Date ?
(
egroup.Key.DateString
) :
(
maxDate == egroup.Key.Date ?
(
egroup.Key.DateString
) :
(
(isOne) ?
(
egroup.Key.DateString
) :
(" ")
)
),
Unit = egroup.Sum(r => r.Field<double>("Unit")),
Price = egroup.Sum(r => r.Field<double>("Price")),
};

此解决方案有助于返回部分值而不是所有值。因此避免重叠。但 future 随着数据的增长,即使这个解决方案也会失败。

我需要实现的解决方案

一个我一直在想但不知道如何实现的想法是-

  1. MIN 和 MAX 日期 DateString 字段将始终返回。 [和我现在正在做的一样]
  2. 无论列表项的总数如何,从 MIN 和 MAX 日期开始以间隔返回 8 个值。
    2.a.但如果列表计数小于或等于 8,则返回所有值。

因此,例如,如果在列表中我有 32 个值。它应该在 DateString 字段中返回总共 10 个值,其余的将为空字符串。

最佳答案

我建议是这样的:

    public static IList<Stock> GetSome(this IList<Stock> input)
{
var result = new List<Stock>();
if (input.Count < 8)
{
return input;
}
else
{
var i = 0;
for (; i < input.Count; ++i)
{
if (i % 8 == 0)
{
result.Add(input[i]);
}
}
if (i % 8 != 0)
{
result.Add(input.Last());
}
}
return result;
}

如果股票不是按时间顺序排列的,我会按日期调用 .Sort()。

您可能希望在代码中添加 null 和空集合检查。

关于c# - 列表以间隔返回特定字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33664962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com