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

この関数は、匿名型のコレクションを返します。匿名型はLINQ式で定義されます。

DB内のPointValuesコレクションが構成されているタイプがわかっている場合は、そのタイプを直接返すことができます。

たとえばPointというクラスがある場合は、LINQ式の匿名コンストラクターを具体的なコンストラクターに変更します。

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

その場合、メソッドはポイントのリストを返します。IList<<ポイント>>

于 2013-01-14T13:36:22.837 に答える
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 に答える