繁体   English   中英

如何定义匿名列表的返回类型

[英]How to define a return type of an anonymous list

我有以下方法:

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>。

感谢您的协助。

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

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

如果您有一个名为Point的类,而不是将LINQ表达式中的Anonymous构造函数更改为一个具体的类:

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

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

你尝试过这样的事情吗?

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)
    );
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM