2012-04-11 25 views
1

我有下面的方法,我想尝试加入String.Comparelinq和string.compare/string.equals在wcf?

public List<Group> GetStudentCollectionByGroup(string anything) 
{ 
    List<Group> groups = (from g in Groups 
          where 
           (from t in g.Groupsz 
           where t.StudentID == anything 
           || t.FirstName == anything 
           || t.LastName == anything select t).Count() > 0 
       select g).ToList(); 

     return groups; 
    } 

如果我尝试!=,而不是==在我的客户端无论我在文本框中键入我以某种方式获取组的回报率不关键是什么。如果我使用==它只会返回与我输入的内容相关的组(属于该课程的学生),所以我希望String.Compare可以帮助我只是不知道如何构建上面的代码?

+0

可能有帮助吗?你想达到什么目的?目前,您的方法将返回所有组中至少有一个“t”具有与传递该函数的字符串相匹配的StudentID,FirstName或LastName的组。 – Alain 2012-04-11 16:29:14

+0

'=='会区分大小写,是一个问题吗?我通常使用'String.Contains(任何东西)'是这些情况,因为这样做不区分大小写的部分搜索(至少在使用Linq到Sql时 - 它转换为'LIKE%x%'我相信) – musefan 2012-04-11 16:29:35

+0

是的,我想它有些人可以搜索一个名字较低或大写的名字,但是如果我尝试!=那么无论输入什么内容,它都会以某种方式返回这些组。如果我使用区分大小写的==,那么如果我输入除区分大小写以外的任何东西,它不会返回任何东西(显然是我想要的),如何返回名称不区分大小写,但是当我键入某个东西时它不会识别它将不会显示任何东西。 – 2012-04-11 16:33:22

回答

1

如果用你说!=“返回具有其他学生证比anything,或比anything以外的第一个名字,或比anything其他姓氏的任何t”可能会失败,办理入住手续的唯一记录替换==将是(anything, anything, anything)

你想要的是一个不区分大小写的比较。

string.Equals(t.FirstName, anything, StringComparision.CurrentCultureIgnoreCase); 
+1

我同意答案,但是,我会说它写作:'t.FirstName.Equals(任何东西,StringComparision.CurrentCultureIgnoreCase);'更具可读性:)。 – 2012-04-11 16:55:44

+0

谢谢你们,是的卢卡斯是对的当我第一次发布答案时,我很难弄清楚它到底发生了什么,但我最终得到了它! – 2012-04-11 16:57:13

+1

@Lucas:'NullReferenceException'如果'FirstName'可以为空。 – Guvante 2012-04-11 20:01:41