2012-04-11 5 views
1

私は、以下の方法を持っていると私はありません、私はテキストボックスに入力するものは何でも私のクライアント側の!=ではなく==をしようとした場合、私は何とかグループのリターンを得るString.Comparewcfのlinqとstring.compare/string.equals?

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

あなたは何を達成しようとしていますか?現在、メソッドは、グループ内の少なくとも1つの 't'が、関数を渡した文字列と一致するStudentID、FirstName、またはLastNameを持つすべてのグループを返します。 – Alain

+0

'=='は大文字と小文字を区別しますが、それは問題ですか?私は通常 'String.Contains(anything)'を使用します。これは大文字と小文字を区別しない部分検索です(少なくともLinqとSqlを使用する場合は 'LIKE%x%'に変換されます) – musefan

+0

しかし、試してみると、大文字/小文字を検索できる人はいますが、タイプされていても何とかグループを返します。私は大文字と小文字を区別する==を使用する場合は、大文字と小文字を区別する正しい名前以外のものを入力すると、何も返されません(どうしたらいいですか)。何でも –

答えて

1

あなたは!===を交換する場合は、そのチェックに失敗する可能性が唯一のレコードを「anything以外anything以外の学生証、またはanything以外の最初の名前、または姓を持つすべてのtを返す」と言っています(anything, anything, anything)となります。

大文字と小文字を区別しない比較が必要です。

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

私は答えに同意しますが、私は 't.FirstName.Equals(anything、StringComparision.CurrentCultureIgnoreCase);'と書くことはより読みやすいと言うでしょう。 –

+0

ありがとう、ええ、ルーカスは正しいです。最初に答えを投稿したときにどこに行ったのか分かりませんでしたが、私は最後にそれを得ました! –

+1

@Lucas: 'FirstName'がヌル可能な場合は' NullReferenceException'です。 – Guvante

関連する問題