gpt4 book ai didi

c# - 使用 Linq to SQL 确定行是否存在的最快方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 03:53:00 26 4
gpt4 key购买 nike

我对一行的内容不感兴趣,我只想知道一行是否存在。 Name 列是主键,因此将有 0 或 1 个匹配行。目前,我正在使用:

if ((from u in dc.Users where u.Name == name select u).Count() > 0)
// row exists
else
// row doesn't exist

虽然上面的方法有效,但它通过选择行的所有内容(如果存在)做了很多不必要的工作。以下是否创建了更快的查询:

if (dc.Users.Where(u => u.Name == name).Any())

...或者是否有更快的查询?

最佳答案

Count() 方法可能会做额外的工作,因为(在 TSQL 中)EXISTSTOP 1 通常要快得多;数据库可以优化“是否至少有一行”。就个人而言,我会使用 any/predicate 重载:

if (dc.Users.Any(u => u.Name == name)) {...}

当然,你可以通过看TSQL比较一下各自做了什么:

dc.Log = Console.Out;

关于c# - 使用 Linq to SQL 确定行是否存在的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com