0

我有以下方法:

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,double>>}

但我不知道如何定义它。

我定义了一个类:

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<{DataTime:System.DateTime, DataValue:double}>' 转换为返回类型 BarList'

我认为答案只是定义 BarChart,然后返回 List<BarChart>。

感谢您的任何帮助。

4

2 回答 2

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)
    );
  }
于 2013-01-14T16:13:53.813 回答
0

该函数返回匿名类型的集合。匿名类型在 LINQ 表达式中定义。

如果您知道数据库中 PointValues 集合的类型,则可以直接返回该类型。

如果您有一个名为例如Point的类,则将 LINQ 表达式中的匿名构造函数更改为具体的构造函数:

select new Point { Time = values.DataTime, Value = values.DataValue }

在这种情况下,您的方法将返回一个点列表。IList<<点>>

于 2013-01-14T13:36:22.837 回答