什么是SQL等效于LINQ .All()

d45*_*456 7 sql linq sql-server sql-server-2012

这在SQL中会是什么样子(SQL Server,如果你想特别的话)?

// where people is a list of Person objects with property Name
bool bobs = people.All(p => p.Name == "Bob");
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 5

您将检查是否有任何记录与条件不符:

not exists(select * from Persons where not Name = 'Bob')
Run Code Online (Sandbox Code Playgroud)

由于nullC#和SQL之间的比较规则不同,如果字段允许,则需要空值的条件:

not exists(select * from Persons where Name <> 'Bob' or Name is null)
Run Code Online (Sandbox Code Playgroud)

  • 你可以改写一下吗,这样就不会伤害我的大脑吗?也许`Where Name <>'Bob'` (5认同)
  • 同意,`Name <>'Bob'`比`not Name ='Bob'`更直观. (2认同)
  • 如果您在回复@ypercube时对`.All()`的说法是正确的,那么您的建议并不完全等效.它只有在没有空值时才有效.如果`Persons.Name`有''Bob'`和null条目(没有别的),[你的谓词会返回true](http://sqlfiddle.com/#!3/d41d8/42902),而`.All ()我怀疑,这将是假的. (2认同)