0

我有一个产生重复的 linq to sql 查询。我似乎可以弄清楚如何消除这些重复记录。也许这里有人可以提供帮助。这个想法是从表 1 中的日期大于表 2 的日期并且表 2 中的日期大于 2011-01-01 的日期从表 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 / Key 将其分组并按总数求和吗?

如在

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