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()
会更清楚地表明可能根本不会执行查询吗?