1

我有这个使用下拉选择列表过滤的 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())
   }
}
4

3 回答 3

0

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

a= db.classA
     .where(u=>String.IsNullOrEmpty(u.city))
     .inlcude(t=>t.somethingfromClassB);
于 2013-09-25T17:43:10.783 回答
0

我相信你想执行左外连接?

请参阅: 将 LEFT OUTER JOIN 转换为实体框架

和/或

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

于 2013-09-25T17:36:29.740 回答
0

以下更改是否有效:

a=db.classA.where(u=>u.city == null || u.city == "").inlcude(t=>t.somethingfromClassB);
于 2013-09-25T17:24:08.383 回答