我有以下方法:
public static object GetBarChart(int dataValue)
{
using (var myEntities = new i96X_dataEntities())
{
var myValues = (from values in myEntities.PointValues
where values.PointID == dataValue
select new
{
values.DataTime,
values.DataValue
}).ToList();
}
if (myValues.Count() != 0)
{
return myValues;
}
return null;
}
我只能将它作为对象返回,因为我无法弄清楚如何将其定义为其类型。当我调试它告诉我返回类型是:
{System.Collections.Generic.List<<> f__AnonymousType2<的System.DateTime,双>>}
但我无法弄清楚如何定义它。
我定义了一个类:
public class BarChart
{
public DateTime Time { get; set; }
public double Value { get; set; }
}
public class BarList
{
public List<BarChart> BarL { get; set; }
}
我认为这是正确的。但是如果我现在使用BarList作为我的返回类型,编译器会读取:
无法转换表达式类型'System.Collections.Generic.List&lt; {DataTime:System.DateTime,DataValue:double}&gt;'返回类型BarList'
我认为答案只是定义BarChart,然后返回List&lt; BARCHART&GT;
感谢您的帮助。
答案 0 :(得分:0)
该函数返回匿名类型的集合。匿名类型在LINQ表达式中定义。
如果您知道DB中PointValues集合的类型,那么您可以直接返回该类型。
如果你有一个名为 Point 的类,而不是将LINQ表达式中的匿名构造函数更改为具体的:
select new Point { Time = values.DataTime, Value = values.DataValue }
在这种情况下,您的方法将返回一个点列表。的的IList&LT;&LT;点&gt;&gt;
答案 1 :(得分:0)
你尝试过这样的事吗?
public static IEnumerable<Tuple<DateTime, DataValue>> GetBarChart(int dataValue)
{
return
(
from values in new i96X_dataEntities()
where values.PointID == dataValue
select new Tuple<DateTime, DataValue>(values.DataTime, values.DataValue)
);
}