2011-01-12 7 views
6

LINQ to SQLを使用してデータベースからデータを選択する必要があります。私は、ID番号で始まり「0000」を含むではないレコードのみを選択すべきであるという条件があります(全ID番号は6桁です)。LINQ to SQLに似ていません

私は「0000」で始まるデータを選択したいたとえば私が使用します。

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

が、私はより多くのNotStartsWithまたはNotContainsの代わりStartsWithのような方法を使用する必要があります。それは可能ですか?

+0

バーはそれほど明白でした。その間、私は 'Func selctor = str =>!str.StartsWith(" 0000 ");'このデリゲートを '.Where(selctor);'に追加しました。このLINQクエリの終わりですが、ofc否定ははるかに簡単です。 – zgorawski

答えて

6

!s.ID.StartsWith("0000")を試しましたか?

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

(すなわちnot operator!を使用して)STARTSWITHは、ブール値を返します。したがって、あなたは単にStartsWithを否定することができます。あなたの質問は以下のようになります。コースの

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

..ちょうどSTARTSWITHのstatetmentの前に論理否定演算子を追加します(!):

HERESにs.ID.StartsWith( "0000")

0

便利な拡張機能を!方法

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); 
関連する問題