2014-03-13 141 views
2

我想从列表中'学生状态'属性中不包含字符串'States'的列表中'奖学金'项目删除。C#字符串不包含

if (States != "") 
      { 
       scholarships.RemoveAll(s => !s.Student_state.Contains(States)); 
       scholarships.RemoveAll(s => s.Student_state == null); 
      } 

这个!性格没有完成这个。有任何想法吗?

+1

请详细说明与s.Student_state是。 – lahsrah

+0

Student_state是实体奖学金的一个属性。 's'是lambda语句的一部分s => s' – SRiley22

+0

'student_state'是状态还是位置?根据字符串是否包含值来移除项目 - 可能会产生不良副作用。例如,如果将它用于“弗吉尼亚州”等地点状态,则“西弗吉尼亚州”学生的奖学金也将被移除。 – DanS

回答

1

是否有可能遇到区分大小写问题? String.Contains执行区分大小写的测试。我过去使用以下方法来实现不区分大小写的测试:

(s.Student_state.IndexOf(States, StringComparison.CurrentCultureIgnoreCase) == -1) 
+0

这是问题所在。谢谢。 – SRiley22

0

您正在测试变量状态,而不是字符串“States”(除非该变量是“States”)。

你的代码应该是:

if (States != "") 
{ 
    scholarships.RemoveAll(s => !s.Student_state.Contains("States")); 
    scholarships.RemoveAll(s => s.Student_state == null); 
} 
+0

对不起,应该已经更清楚了,它是一个变量“国家”。 – SRiley22

+0

@ SRiley22,好的,你可以发布一些样本数据吗?如果是这种情况,它看起来像你的代码应该工作。如果你看看函数的返回值是0吗?更一般地说,你怎么知道它不像你期望的那样工作? – BradleyDotNET

0

你能试试吗?这里的陈述序列很重要。

if (States != "") 
{ 
    scholarships.RemoveAll(s => s.Student_state == null); 
    scholarships.RemoveAll(s => !s.Student_state.Contains("States"));  
} 
0

如何选择您想要的?

if (States != "") 
{ 
    scholarships = scholarships.Where(s=> !string.IsNullOrEmpty(s.Student_state) && s.Student_state.Contains(States)).ToList(); 
}