Я пытаюсь решить проблему linq.
Я связываю данные с графиком silverlight telerik silverlight, но мне не везет. Я могу заставить график работать с жестко закодированными значениями, однако, когда я пытаюсь привязать его к базе данных, данные не возвращаются.
Возвращает ожидаемые данные.
public class TranactionDetail
{
public DateTime TransactionDate { get; set; }
public int TransactionType { get; set; }
public double TransactionAmount { get; set; }
public int Month{ get; set; }
public string MonthName { get; set; }
public double TransactionCount { get; set; }
public static ObservableCollection<TranactionDetail> GetTransactions(int transactionType)
{
ObservableCollection<TranactionDetail> data;
if (transactionType == 1)
{
data = new ObservableCollection<TranactionDetail>()
{
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 11,Month = DateTime.Now.AddMonths(1).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 3,Month = DateTime.Now.AddMonths(2).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(3).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(4).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(5).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 12,Month = DateTime.Now.AddMonths(6).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(7).Month,TransactionType = 1} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(8).Month,TransactionType = 1} ,
};
}
else
{
data = new ObservableCollection<TranactionDetail>()
{
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(1).Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 2,Month = DateTime.Now.AddMonths(2).Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 5,Month = DateTime.Now.AddMonths(3).Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(4).Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(5).Month,TransactionType =2} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(6).Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 1,Month = DateTime.Now.AddMonths(7).Month,TransactionType = 2} ,
new TranactionDetail(){TransactionAmount = 7,Month = DateTime.Now.AddMonths(8).Month,TransactionType = 2} ,
};
}
return data;
}
}
Привязка графика как этот
List<ObservableCollection<TransactionDetail>> data = new List<ObservableCollection<ransactionDetail>>();
data.Add(TransactionDetail.GetTransactions(1));
data.Add(TransactionDetail.GetTransactions(3));
this.radChart.ItemsSource = data;
Xaml
<telerik:RadChart x:Name="radChart">
<telerik:RadChart.DefaultView>
<telerik:ChartDefaultView>
<telerik:ChartDefaultView.ChartTitle>
<telerik:ChartTitle Content="Transaction Data" />
</telerik:ChartDefaultView.ChartTitle>
</telerik:ChartDefaultView>
</telerik:RadChart.DefaultView>
<telerik:RadChart.SeriesMappings>
<telerik:SeriesMapping LegendLabel="Processed" CollectionIndex="0">
<telerik:SeriesMapping.SeriesDefinition>
<telerik:LineSeriesDefinition ShowItemLabels="True" />
</telerik:SeriesMapping.SeriesDefinition>
<telerik:SeriesMapping.ItemMappings>
<telerik:ItemMapping DataPointMember="YValue" FieldName="TransactionAmount" />
<telerik:ItemMapping DataPointMember="XValue" FieldName="Month" />
</telerik:SeriesMapping.ItemMappings>
</telerik:SeriesMapping>
<telerik:SeriesMapping LegendLabel="Redeemed" CollectionIndex="1">
<telerik:SeriesMapping.SeriesDefinition>
<telerik:LineSeriesDefinition ShowItemLabels="True" />
</telerik:SeriesMapping.SeriesDefinition>
<telerik:SeriesMapping.ItemMappings>
<telerik:ItemMapping DataPointMember="YValue" FieldName="TransactionAmount" />
<telerik:ItemMapping DataPointMember="XValue" FieldName="Month" />
</telerik:SeriesMapping.ItemMappings>
</telerik:SeriesMapping>
</telerik:RadChart.SeriesMappings>
</telerik:RadChart>
Теперь, если я попытаюсь связать данные с фактическими данными, такими как
var grouped = from t in TransctionData
group t by new
{
t.PurchaseDate.Value.Month
}
into g
select new TransactionDetail()
{
Month = g.Select((n => n.PurchaseDate.Value.Month)).First(),
TransactionAmount = g.Count()
};
List<ObservableCollection<TransactionDetail>> data = new List<ObservableCollection<TransactionDetail>>();
this.radChart.ItemsSource = grouped.ToList();
Ничего не возвращено. Я установил точку останова, и я вижу, что это значения внутри сгруппированных, и они выглядят как TransactionDetail.
Я предполагаю, что причиной является первый метод, использующий наблюдаемую коллекцию, по сравнению со вторым, использующий только tolist ().
Что мне нужно изменить?