Pergunta

Em ADO.Net/SQLClient muitas vezes eu ia fazer algo como isto:

SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234

... e fogo-lo usando ExecuteScalar para retornar o valor de contagem -. Para uma verificação simples, se algo existe

Como eu poderia fazer o mesmo usando LinqToSql?

Foi útil?

Solução

if (context.SomeTable.Any(row => row.SomeKey == 1234))
{
    DoStuff();
}

Você também pode usar Count().

if (context.SomeTable.Count(row => row.SomeKey == 1234) > 0)
{
    DoStuff();
}

Mas isso requer sempre que passar por todas as linhas, enquanto Any() pode retornar após a primeira linha correspondente -. Modo Any() poderia ter melhor desempenho

Outras dicas

Lembre-se, Linq para Sql é adiada execução, o que significa, a consulta só realmente executado quando você acessar a coleção. Portanto:

var q = (from p in db.SomeTable
        where p.SomeKey == 1234
        select p).Count();

Será que se transformar em um SELECT COUNT () no lado do SQL das coisas.

Se você está procurando para ver se existe algo que você pode usar a qualquer função:

if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
    return true;
}

ou se você realmente quer saber que a contagem você pode usar a função de onde e a função de contagem:

context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top