Linq IN运营商

Hoo*_*ody 28 c# linq-to-sql

我已经尝试过搜索这个但是找不到适合我情况的例子.

我有这种方法给回头客.如何使用字符串数组代码进行过滤?包含对我不起作用.

public static List<Customer> GetCustomers(string[] customerCodesArray)
{
    using (busDataContext g = new busDataContext())
    {
        return g.Customers.Where(
            x => x.customerCode.Contains(customerCodesArray)).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

Eni*_*ate 40

请尝试以下代码:

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList(); 
Run Code Online (Sandbox Code Playgroud)

  • 虽然技术上正确,但在使用SQL时,这不是性能最佳的解决方案.它需要扫描整个Customers表,并且很可能是外部应用客户代码数组上的每条记录.其复杂性变为O(N*M).使用Linq join语句会更实际,因此生成的SQL查询也可以使用join. (2认同)

Joe*_*Joe 21

你倒退了:

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList();
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 11

我认为您需要反转Contains表达式,因为您想要查看数组是否包含客户代码,而不是相反.

试试这个:

return g.Customers.Where(x => customerCodesArray.Contains(x.customerCode)).ToList();
Run Code Online (Sandbox Code Playgroud)


Jam*_*ski 5

尝试

return g.Customers.Where(x=>customerCodesArray.Contains(x.CustomerCode)).ToList();
Run Code Online (Sandbox Code Playgroud)