Linq to sql 将Linq中的sql语句分成两部分或更多部分,具体取决于程序条件

Linq to sql 将Linq中的sql语句分成两部分或更多部分,具体取决于程序条件,linq-to-sql,Linq To Sql,我是林克的一个原则人物,所以我需要一些帮助 我不知道在Linq语法中,通过将查询分解为两个或更多部分 就像下面的例子一样 记录将在每个步骤中立即从sql server下载,或者在我开始查看所有数据时发送到服务器? 例如,当我绑定一些对象时(例如Datagrid) System.Linq.IQueryable结果=db.Panorami; 字节FoundOneContion=0; //第一步 如果(!string.IsNullOrEmpty(Title)) { Result=Result.Wher

我是林克的一个原则人物,所以我需要一些帮助

我不知道在Linq语法中,通过将查询分解为两个或更多部分

就像下面的例子一样

记录将在每个步骤中立即从sql server下载,或者在我开始查看所有数据时发送到服务器? 例如,当我绑定一些对象时(例如Datagrid)

System.Linq.IQueryable结果=db.Panorami;
字节FoundOneContion=0;
//第一步
如果(!string.IsNullOrEmpty(Title))
{
Result=Result.Where(p=>SqlMethods.Like(p.Title,“%”+Title+“%”);
FoundOneContion=1;
}
//步骤2
如果(!string.IsNullOrEmpty(Subject))
{
Result=Result.Where(p=>SqlMethods.Like(p.Subject,“%”+Subject+“%”);
FoundOneContion=1;
}
如果(FoundOneContion==0)
{
返回null;
}
其他的
{
返回Result.OrderBy(p=>p.Title).Skip(PS*CP).Take(PS);
}
如果不幸,Linq立即下载所有记录

(因此我的怀疑是对的!)

是否存在解决此问题的语法

例如:三元运算符(条件?真部分:假部分)


如有任何建议,我将不胜感激。谢谢大家

上述方法不枚举查询-因此不进行数据库调用。已构造查询,但未执行该查询


您可以通过调用
foreach
,或调用调用调用
foreach
的某些方法(例如
ToList
ToArray
)或调用
GetEnumerator()
)来枚举查询。这将导致执行查询。

上述方法不会枚举查询-因此不会进行数据库调用。已构造查询,但未执行该查询


您可以通过调用
foreach
,或调用调用调用
foreach
的某些方法(例如
ToList
ToArray
)或调用
GetEnumerator()
)来枚举查询。这将导致执行查询。

非常感谢!!对回复完全满意:))非常感谢!!对答复完全满意:))
System.Linq.IQueryable<Panorami> Result = db.Panorami;
byte FoundOneContion = 0;

//step 1
if (!string.IsNullOrEmpty(Title))
{
  Result = Result.Where(p => SqlMethods.Like(p.Title, "%" + Title + "%"));

  FoundOneContion = 1;
}
//step 2
if (!string.IsNullOrEmpty(Subject))
{
  Result = Result.Where(p => SqlMethods.Like(p.Subject, "%" + Subject + "%"));
  FoundOneContion = 1;
}
if (FoundOneContion == 0)
{
  return null;
}
else
{
  return Result.OrderBy(p => p.Title).Skip(PS * CP).Take(PS);
}