使用linq选择空条目

时间:2013-09-25 17:12:43

标签: c# asp.net-mvc linq

我有这个使用下拉列表选择列表过滤的linq查询。 但是,过滤器有效,我想从表中选择城市为空的所有字段。此条件给出空结果集。 这是错误的,因为有超过100个没有城市的条目。

我的模特有这个:

public class classA
{
   public string city {get; set;}   
   public ClassB somethingfromClassB{get; set;}    
}

public class classB
{
    //get set methods here
}
A类的

控制器如下所示:

public class classA : controller
{
   public actionresult index()
   {
      //everything here works except this linq gives me an empty result sets:

      var a = db.classA.inlcude(t=>t.somethingfromClassB);
      if(value =="")
      {
          a=db.classA.where(u=>u.city==null).inlcude(t=>t.somethingfromClassB);
      }
      return view(a.tolist())
   }
}

3 个答案:

答案 0 :(得分:0)

以下更改是否有效:

a=db.classA.where(u=>u.city == null || u.city == "").inlcude(t=>t.somethingfromClassB);

答案 1 :(得分:0)

我相信您想要执行左外连接?

请参阅: Converting a LEFT OUTER JOIN to Entity Framework

和/或

如何:执行左外连接(C#编程指南) http://msdn.microsoft.com/en-us/library/vstudio/bb397895.aspx

答案 2 :(得分:0)

如果您将Empty字符串视为NULL,首先您应该改变主意!其次,您可以像这样检查这两种情况:

a= db.classA
     .where(u=>String.IsNullOrEmpty(u.city))
     .inlcude(t=>t.somethingfromClassB);