首页 > 解决方案 > 为什么我可以引用 select new 中不在 select from 语句中的表

问题描述

我有一个使用实体框架查询的 SQL Server 数据库。

我想获取各种表的行数,但也要尽量减少到数据库的往返行程。所以我使用“select new”返回一个包含各种计数的匿名类型。

我不明白为什么当“in db.Submissions”表明结果仅限于单个表时,我可以在语句中查询多个表。

如果有的话,这样做有什么影响?

            var counts = (from s in db.Submissions
                    select new
                    {
                        s1 = db.Submissions.Count(i => i.SubmittedDateTime >= yesterday),
                        s2 = db.Submissions.Count(i => i.SubmittedDateTime >= lastweek),
                        s3 = db.Submissions.Count(i => i.SubmittedDateTime >= lastfortnight),
                        s4 = db.Submissions.Count(),
                        cr1 = db.ContactRequests.Count(i => i.ContactRequestDateTime >= yesterday),
                        cr2 = db.ContactRequests.Count(i => i.ContactRequestDateTime >= lastweek),
                        cr3 = db.ContactRequests.Count(i => i.ContactRequestDateTime >= lastfortnight),
                        cr4 = db.ContactRequests.Count(),
                        l1 = db.Log.Count(i => i.LogDateTime >= yesterday),
                        l2 = db.Log.Count(i => i.LogDateTime >= lastweek),
                        l3 = db.Log.Count(i => i.LogDateTime >= lastfortnight),
                        l4 = db.Log.Count(),
                    }).FirstOrDefault();

使用正确的值成功执行,例如:{ s1 = 0, s2 = 6, s3 = 6, s4 = 6, cr1 = 0, cr2 = 1, cr3 = 1, cr4 = 1, l1 = 0, l2 = 0 .. .}

标签: c#entity-frameworklinq

解决方案


推荐阅读