EF GroupJoin

来源:互联网 发布:淘宝店铺推广语 编辑:程序博客网 时间:2024/04/30 22:36

左外联结,GroupJoin的一段示例代码:

var data = keys.GroupJoin(    db.AggSp1Hours.        Where(o => o.ShowId == sid && o.TimeSlot >= dtMin && o.TimeSlot < dtMax).        GroupBy(o => new { o.Product.Name, o.TimeSlot }).        Select(o => new ReportItem { Key = new ReportKey() { Name = o.Key.Name ?? sName, dt = o.Key.TimeSlot }, Value = o.Sum(a => (double?)a.Amount ?? 0) }),    key => key,    agg => GetRefKey(keys, agg.Key),    (key, agg) => new ReportItem { Label = key.dt.ToString("HH:00"), Name = key.Name, Value = agg.Sum(a => a.Value) });

这个key=>key和agg=>key,从值上看是相等的,但是引用不同,因为在select new的时候不能把agg的key赋值为另一个引用对象。

结果在groupjoin的对比中,两个key就不想等不能进行期望的左外联结。即便重写key对象的Equals方法也不行。


无奈,便通过keys再找到与agg中的key对应的引用key来作为键与key=>key进行比对,就可以了。

 感觉有些万恶啊。

0 0
原创粉丝点击