2

表の形式:

Date   |   NumberIWantToSum   |   ID(PK)   |   ForeignKeyID

特定のForeignKeyIDについて、Linq2SQLを使用して、同じ日付のすべてのNumberIWantToSum値を合計してから、自分のカスタムクラスのリストに行のすべての値を入力します。

これは可能ですか?

したがって、値が与えられた場合:

    Date   |   NumberIWantToSum   |   ID(PK)   |   ForeignKeyID
   1/1/1             1                  123              2
   1/1/1             12                 124              2
   1/1/1             44                 125              3
   1/1/2             14                 126              2

このメソッドのForeignKeyIDのパラメーターが与えられましたが、2であると仮定すると、このメソッドは行を返す必要があります。

   1/1/1             13                 123              2
   1/1/2             14                 126              2

これを行う私の試み:

(from o in context.table.Where(r => r.GroupByThisColID == GroupByThisColID)
 select new CustomClass()
 {
     ID = o.ID,
     Date = o.Date,
     NumberIWantToSum = o.NumberIWantToSum,
     ForeignKeyID  = o.ForeignKeyID
 }).ToList();

ただし、これはNumberIWantToSumの値を合計して、それらを1つの行に結合するものではありません。

どうすればこれを行うことができますか?

4

3 に答える 3

3

あなたの説明に基づいて、GroupByThisColdIDグループ化ではなくフィルタリングに使用されます。あなたは実際に日付でグループ化したいと考えています。

これを試して:

var query = from o in context.table
            where o.GroupByThisColID == GroupByThisColID
            group o by o.Date into grouping
            select new CustomClass()
            {
                ID = grouping.First().ID,
                Date = grouping.Key,
                SummedNumbers = grouping.Sum(g => g.NumberIWantToSum),
                GroupByThisColID  = grouping.First().GroupByThisColID
            };

を使用grouping.First().IDすると、最初の ID が返されますが、異なる場合があります。これは、サンプル データでは「123」になります。

于 2012-07-02T13:19:57.350 に答える
2
var r = from x in table
        group x by x.GroupByThisColID into g
        select new
        {
            Key = g.Key,
            Sum = g.Sum(i => i.NumberIWantToSum)
        };

foreach (var x in r)
{
    var key = x.Key;
    var sum = x.Sum;
}
于 2012-07-02T13:16:13.053 に答える
2
var results = context.table.GroupBy( t=> t.GroupByThisColID)
    .Select( g => new CustomClass()
        {
            GroupByThisColID = g.Key,
            ColumnSum = g.Sum( p => p.NumberIWantToSum)
        });
于 2012-07-02T13:17:20.667 に答える