2012-09-26 53 views
0

我在我的項目中使用Linq。在linq中不等於c#

我想從viewTeachers所有的老師那裏Mailcode不等於20

我的代碼是

var startWithFullName = from v in Db.viewTeachers 
              where v.FullName.StartsWith(prefix) && !v.MailCode.Equals(20) 
              orderby v.FullName 
              select new { v.ID, v.FullName }; 

        foreach (var teacher in startWithFullName) 
        { 
         teacherTable.Rows.Add(teacher.FullName, teacher.ID); 
        } 

我已經寫

!v.MailCode.Equals(20) 

,但不能確定其對不正確的。

任何人都可以告訴我我該怎麼做?

+0

郵編類型是int嗎? –

+0

你的問題必須在其他地方。正在使用EF Code First?然後在調試器中,您應該看到生成的SQL語句。這是你期望的嗎? (也許直接在數據庫上嘗試)。 – jeroenh

+0

@ igor是郵件編碼類型是int。 –

回答

6

你可以簡單地寫你的條件爲:

v.MailCode != 20 

所以,你的where子句應該是:

where v.FullName.StartsWith(prefix) && v.MailCode != 20 
+0

它仍然無法正常工作。它不顯示任何教師 –

+0

@HiralBavisi,你是否有記錄MailCode 20和和姓名以你的前綴開頭。 – Habib

+0

@ Habib是的我有 –

1

條件可以寫爲!= 20 ..

事情是這樣的:

var startWithFullName = from v in Db.viewTeachers 
      where v.FullName.StartsWith(prefix) && v.MailCode != 20 
      orderby v.FullName 
      select new 
       { 
       v.ID, 
       v.FullName 
       }; 
+0

不工作。它沒有顯示任何錯誤,但它也沒有顯示任何老師。 –

-1

它不會編譯。等於在連接中使用以及在哪裏應該使用條件!=。 希望這會消除你的疑惑。

+0

編譯得很好。他不是在談'equals'運算符,而是'Equals'方法 – jeroenh