我有一个项目列表
List<Project> projects = ProjectRepository.GetProjects(user);
这会返回用户项目。每个项目都可以有一个名为ProjectServerUrl
的属性。我想只从List获取那些对象属性ProjectServerUrl不为null的项目。我尝试了以下代码行,但它总是返回所有项目:
List<Project> listP = projects.Where(x => (x.ProjectServerUrl != null || x.ProjectServerUrl != "")).ToList();
这里有什么问题?
答案 0 :(得分:2)
您要求获取ProjectServerUrl为null或为空的所有项目。你必须使用AND
List<Project> listP = projects.Where(x => (x.ProjectServerUrl != null && x.ProjectServerUrl != "")).ToList();
答案 1 :(得分:2)
var listP = projects
.Where(x => (x.ProjectServerUrl != null && x.ProjectServerUrl != ""))
.ToList();
我认为您的||
必须是&&
。
你可以简化这个:
var listP = projects
.Where(x => !String.IsNullOrEmpty(x))
.ToList();
答案 2 :(得分:2)
<强>解释强>
在你的Where子句中,你正在使用OR运算符,这就是你仍然在列表中接收对象的原因,即使它们为空或空白......
例如,ProjectServerUrl
不等于null,但这并不意味着为空或只是空格。基本上,OR运算符需要更改为&amp;&amp;
所以改变这个:
List<Project> listP = projects.Where(x => (x.ProjectServerUrl != null || x.ProjectServerUrl != "")).ToList();
要:
List<Project> listP = projects.Where(x => !String.IsNullOrWhiteSpace(x.ProjectServerUrl)).ToList();
这样就可以防止null,空或空格值。
我希望这有帮助!