0

重複を生成するlinqtosqlクエリがあります。これらの重複レコードを削除する方法を理解しているようです。多分ここの誰かが助けることができます。アイデアは、テーブル2の日付よりも大きいテーブル1の日付に対して発生し、2011-01-01よりも大きいテーブル2の日付を持つテーブル2から「合計」の合計を取得することです。私が持っていることはこれを達成しますが、重複があるため、合計は正確に2倍になります。あなたの助けは大歓迎です

テーブル構造:

table1:  id, date
table2: id, date, total

クエリ

from t1 in table1
                    join t2 in table2 on t1.id equals t2.id into x
                    from y in x
                    where t1.id == "123" && t1.date > y.date && y.date > DateTime.Parse("2011-01-01") 
                    group t1 by new { y.total} into g

                    select g.Sum(t1 => t1.total);
4

2 に答える 2

2

クエリを複数のステップに分割する必要があります。

必要なデータを選択します。

var data = 
from t1 in table1
join t2 in table2 on t1.Id equals t2.Id
where t1.Id == "123" && t1.Date > t2.Date && t2.Date > DateTime.Parse("2011-01-01")
select new {t1.Id, t2.Date, t2.Total};

アイテムの繰り返しを避けるために、distinctを呼び出します。

var distinct = data.Distinct();

合計を取得します。

return distinct.GroupBy(x => x.Date)
                .Select(g => g.Sum(item => item.Total));
于 2012-04-04T11:05:03.973 に答える
0

ID /キーでグループ化し、合計で合計するべきではありませんか?

のように

  group t1 by new { y.Id} into g
于 2012-04-04T10:05:53.360 に答える