2011-01-12 12 views
6

tengo que seleccionar los datos de la base de datos utilizando LINQ a SQL. Hay una condición que yo debería seleccionar único registro con ID no que contiene "0000" al iniciar (número de identificación conjunto tienen seis dígitos).no como en LINQ to SQL

Por ejemplo, cuando me gustaría seleccionar los datos que comienzan con "0000" Voy a utilizar:

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

pero necesito utilizar el método más como NotStartsWith o NotContains en lugar de StartsWith. ¿Es eso posible?

+0

Bah era tan obvio. . La culpa es mía; (En su parte que hice algo así como: 'Func selctor = str => str.StartsWith ("0000");' y ha añadido este delegado en '.Where (selctor);' a! al final de esta consulta LINQ. Pero negate OFC es mucho más simple. Gracias! – zgorawski

Respuesta

6

Ha intentado !s.ID.StartsWith("0000")? (Es decir, usando el not operator!)

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

startsWith devuelve un valor booleano. Entonces puedes negar simplemente el StartsWith. Su consulta debería ser como a continuación;

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

claro .. sólo tiene que añadir un operador de negación lógica frente a la statetment StartsWith (!):

s.ID.StartsWith ("0000")

0

Heres una extensión útil método

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);