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