C# linq到sql条件读取

C# linq到sql条件读取,c#,linq-to-sql,C#,Linq To Sql,我正在编写一个如下所示的查询: var TheOutput = (from x in MyDC.MyTable where..... select new MyModel() { MyPropID = (from a in MyDC.MyOtherTable where....

我正在编写一个如下所示的查询:

var TheOutput = (from x in MyDC.MyTable
                 where.....
                 select new MyModel()
                 {
                    MyPropID = (from a in MyDC.MyOtherTable
                                where....
                                select a.ElementID).SingleOrDefault(),

                    MyPropData = (from a in MyDC.MyOtherTable
                                  where a.ElementID == MyPropID
                                  select a.ElementData).SingleOrDefault(),
                 }
我正在用数据库中的几个属性填充MyModel。其中两个属性是通过读取另一个表来填充的。此时,我首先读取MyPropID以查看另一个表中是否有元素,然后再次读取另一个表以获取数据,而不管是否检索到ID

如果我从读取MyPropID并返回null知道没有与where a.ElementID==MyPropID子句匹配的数据,那么如何消除第二次读取

谢谢

var TheOutput = (from x in MyDC.MyTable
                 where.....
                 let id = (from a in MyDC.MyOtherTable
                                where....
                                select a.ElementID).SingleOrDefault()
                 select new MyModel()
                 {
                    MyPropID = id,
                    MyPropData = (from a in MyDC.MyOtherTable
                                  where id != null && a.ElementID == id
                                  select a.ElementData).SingleOrDefault()
                 }

如果您的代码将从此查询创建一条SQL语句,那么我认为检查null并不重要。如果此查询将导致多个SQL语句,那么它可能会出现。

在哪里可以找到由代码生成的SQL语句的数量?可能是
MyPropData=id==null?null:(来自MyDC.MyOtherTable中的a…).Single()
会更清楚地表明可能根本不会执行查询吗?