2011-01-12 56 views
6

我必須從使用LINQ to SQL的數據庫中選擇數據。有一個條件,我應該選擇只有記錄ID 而不是開始時包含「0000」(整個身份證號碼有六位數字)。不喜歡在LINQ to SQL

例如,當我要選擇開始「0000」的數據,我將使用:

var idList = (from s 
    in db.TABLE 
    where s.ID.StartsWith("0000") 
    select s.ID 
    ); 

,但我需要使用方法更像NotStartsWithNotContains代替StartsWith。那可能嗎?

+0

Bah這是如此明顯。對我來說是羞恥;(同時我做了如下的事情:`Func selctor = str =>!str.StartsWith(「0000」);`並且將這個委託添加到`.Where(selctor);`at這個LINQ查詢結束了,但是,求逆更簡單了,謝謝! – zgorawski 2011-01-12 14:36:34

回答

6

你試過!s.ID.StartsWith("0000")? (即,使用的not operator!

3
var idList = (from s 
    in db.TABLE 
    where !s.ID.StartsWith("0000") 
    select s.ID 
    ); 
3

Startswith返回一個布爾值。所以你可以簡單地否定StartsWith。您的查詢應該如下所示; !

s.ID.StartsWith( 「0000」)

2

當然..只是在StartsWith statetment前加上一個否定邏輯運算符(!)方法

public static class StringExtenstionMethods 
{ 
    public static bool DoesNotStartWith(this string source,string target) 
    { 
     return !source.StartsWith(target); 
    } 
} 


var idList = (from s  
in db.TABLE  
where s.ID.DoesNotStartWith("0000")  
select s.ID); 
0

繼承人一個方便的擴展:

var idList = (from s 
    in db.TABLE 
    where !s.ID.StartsWith("0000") 
    select s.ID 
    );