【发布时间】:2015-11-12 05:24:57
【问题描述】:
我正在使用大量数据实施 Telerik Chart。图表 x 轴上的标签重叠。我已经克服了这个问题,但从长远来看它并不可靠。
这些是列表的字段:
FieldName DataType
Date DATETIME
DateString STRING
Unit DOUBLE
Price DOUBLE
X轴标签值来自DateString字段
我实施的解决方案
- MIN 和 MAX Date
DateString字段将始终返回。 - 对于其余部分,返回工作日为“星期一”的值
这是代码-
// 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")),
};
此解决方案有助于返回的不是所有值,而是其中一些值。因此避免重叠。但未来随着数据的增长,即使是这种解决方案也会失败。
我需要实施的解决方案
一个我在想但不知道如何实现的想法是-
- MIN 和 MAX Date
DateString字段将始终返回。 [和我现在做的一样] - 无论列表项的总计数如何,从 MIN 和 MAX 日期开始以间隔返回 8 个值。
2.a.但如果 List 计数小于或等于 8,则返回所有值。
因此,例如,如果在列表中我有 32 个值。它应该在 DateString 字段中返回我总共 10 个值,其余的将是空字符串。
【问题讨论】:
-
如果没有示例数据说明失败的地方,很难提出解决方案