2012-04-11 21 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