C# Linq用于计算行数而不返回行

C# Linq用于计算行数而不返回行,c#,linq,entity-framework,C#,Linq,Entity Framework,我希望你们中的一个人能帮我解决这个问题: 根据下面的方法,我是否可以在DB服务器上进行计数,而不是检索所有行,并且该函数不应该为每个搜索名称运行查询,对于函数的每次调用,它应该只运行一条SQL语句。您可以使用Contains大大简化查询,它将转换为WHERE IN子句。然后简单地计算匹配的行 public static int CountEmployeesByName(IEnumerable<string> namesToSearch) { using (var contex

我希望你们中的一个人能帮我解决这个问题:
根据下面的方法,我是否可以在DB服务器上进行计数,而不是检索所有行,并且该函数不应该为每个搜索名称运行查询,对于函数的每次调用,它应该只运行一条SQL语句。

您可以使用
Contains
大大简化查询,它将转换为
WHERE IN
子句。然后简单地计算匹配的行

public static int CountEmployeesByName(IEnumerable<string> namesToSearch)
{
    using (var context = new ApplicationEntities())
    {
          return context.employees
                        .Where(e => namesToSearch.Contains(e.name))
                        .Count();
    }
}
public static int CountEmployeesByName(IEnumerable namesToSearch)
{
使用(var context=newapplicationenties())
{
return context.employees
.Where(e=>nametosearch.Contains(e.name))
.Count();
}
}

您可以使用
Contains
大大简化查询,它将转换为
WHERE IN
子句。然后简单地计算匹配的行

public static int CountEmployeesByName(IEnumerable<string> namesToSearch)
{
    using (var context = new ApplicationEntities())
    {
          return context.employees
                        .Where(e => namesToSearch.Contains(e.name))
                        .Count();
    }
}
public static int CountEmployeesByName(IEnumerable namesToSearch)
{
使用(var context=newapplicationenties())
{
return context.employees
.Where(e=>nametosearch.Contains(e.name))
.Count();
}
}

很抱歉,我忘了说:问题的第一部分只需更改一行代码,第二部分只需更改一行代码,你就可以做到吗?我不明白为什么会有限制。这两件事都可以做到——基本上,它会从员工那里变成
select count(*),其中name in(..)
是我不幸受到的限制。我知道你的感受,我也在想同样的问题。我想你可以使用LinqKit的PredicateBuilder,但我不知道如何在不到3行的更改中完成。至少我认为您需要更改
查询的定义
,每个名称的选择逻辑,我很抱歉,我忘了说:你能做到吗?第一部分只修改一行代码,第二部分只修改一行代码?我不明白为什么会有限制。这两件事都可以做到——基本上,它会从员工那里变成
select count(*),其中name in(..)
是我不幸受到的限制。我知道你的感受,我也在想同样的问题。我想你可以使用LinqKit的PredicateBuilder,但我不知道如何在不到3行的更改中完成。至少,我认为您需要更改
查询的定义、每个名称的选择逻辑以及对构建的查询求和的语句。通常最好键入您的代码,以便其他人可以复制它。要将文本格式化为代码,每行必须以四个空格开头。通常最好键入代码,以便其他人可以复制。要将文本格式化为代码,每行必须以四个空格开头。