C# linq查询c中的where if语句#

C# linq查询c中的where if语句#,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,我有一个运行完美的linq查询,但是,如果我有一个空的mySTRINGVAR,我想避免整个“where”过滤器,但是当我包含if语句时,它破坏了查询!提前感谢你的帮助 所以这就是我所拥有的,而且它非常有效!!: var records = from school in schools join tableA in tableAs on someid equals anotherid into tableC from tableD in tableC.Where(c => c.t

我有一个运行完美的linq查询,但是,如果我有一个空的
mySTRINGVAR
,我想避免整个“where”过滤器,但是当我包含if语句时,它破坏了查询!提前感谢你的帮助

所以这就是我所拥有的,而且它非常有效!!:

var records = from school in schools
   join tableA in tableAs on someid equals anotherid into tableC
   from tableD in tableC.Where(c => c.tablefield == mySTRINGVAR).DefaultIfEmpty()
   select new { etc.. }
但是,如果我的
mySTRINGVAR
为null或空,我将尝试不包含任何“where”语句:

var records = from school in schools
   join tableA in tableAs on someid equals anotherid into tableC
   from tableD in tableC.DefaultIfEmpty()
   select new { etc.. }
但是,如果我的 mySTRINGVAR为null或空:

var records = from school in schools
   join tableA in tableAs on someid equals anotherid into tableC
   from tableD in tableC.DefaultIfEmpty()
   select new { etc.. }
修改
中的
,如下所示:

tableC.Where(c => !string.IsNullOrEmpty(mySTRINGVAR) && c.tablefield == mySTRINGVAR)
但是,如果我的 mySTRINGVAR为null或空:

var records = from school in schools
   join tableA in tableAs on someid equals anotherid into tableC
   from tableD in tableC.DefaultIfEmpty()
   select new { etc.. }
修改
中的
,如下所示:

tableC.Where(c => !string.IsNullOrEmpty(mySTRINGVAR) && c.tablefield == mySTRINGVAR)

您是否知道,没有扩展方法
defaultifempty
?这就是问题所在吗?
defaultifempty
defaultifempty
不同。您遇到了什么错误,或者什么不正常?很抱歉,我使用的是DefaultIfEmpty:)我已经编辑了我的代码。您是否知道,没有扩展方法
DefaultIfEmpty
?这就是问题所在吗?
defaultifempty
defaultifempty
不同。你得到了什么错误,或者什么工作不正常?很抱歉,我使用的是DefaultIfEmpty:)我已经编辑了我的代码。这不是类似于
Where(c=>string.IsNullOrEmpty(c.tablefield))
?@king,那么
c.tablefield==mySTRINGVAR
的比较应该是
!string.IsNullOrEmpty(mySTRINGVAR)
@Kaf,我就是这么做的,但是在读了语句后修改了它,你是对的,我想它应该是
一个问题:这个方法不是在检查每个记录的
mySTRINGVAR
是否为
IsNullOrEmpty
吗?这与
Where(c=>string.IsNullOrEmpty(c.tablefield))
类似吗?@KingKing,
c.tablefield==mySTRINGVAR
的比较应该是
!string.IsNullOrEmpty(mySTRINGVAR)
@Kaf,我就是这么做的,但是在读了语句后修改了它,你是对的,我想它应该是
一个问题:这个方法不是在检查每个记录的
mySTRINGVAR
是否为
IsNullOrEmpty