0
public class ConvertedReading
{
    public int DatePointID { get; set; }
    public string DatapointName { get; set; }
    public DateTime ReadingDate { get; set; }
    public double Value { get; set; }
}

以下のコレクションがあるとします。

    IEnumerable<ConvertedReading> readingData;

c# を使用して、ラムダ構文を使用して LINQ ステートメントを記述し、次のコレクションを出力します。

public class DataPointTotal
{
    public string DatapointName{get; set;}
    public double Total{get; set;}
}

返品する商品は 1 つにつき 1 つですdatepointID

合計は、convertedReading.valyeそれぞれに関連する合計を表す必要がありますdatePointID

私は次のことを試しましたが、それがうまくいくかどうかはわかりませんが、値の合計を正しく取得できないようです。

var subtotals = from x in ConvertedReading group x by x.DatapointName into g select new { Type = x.DatapointName , SubTotal = g.Sum(x => x.Total) };

構文は正しいですか?

みんなありがとう、

4

2 に答える 2

2

答えは次のとおりです。

var result = readingData.GroupBy(r => r.DataPointID)
                        .Select(g => new DataPointTotal
                                {
                                    DataPointName = g.First().DataPointName,
                                    Total = g.Sum(r => r.Value)
                                });

しかし、私が質問を書いたことを考えると、それは不正行為だと思います! ;)

于 2013-03-21T21:50:05.640 に答える
0
var result = db.ConvertedReading.GroupBy(i=>i.DatapointName).Select(g => new DataPointTotal(){DatapointName = g.DatapointName, Total = g.Sum(i=>i.Total)});
于 2013-03-21T21:52:12.050 に答える