LINQ查询中整数字段的部分匹配

LINQ查询中整数字段的部分匹配,linq,entity-framework,Linq,Entity Framework,我可以通过如下查询获得字符串字段的部分匹配: employees = context.Employees .Where(ee => ee.LastName.Contains(text)) .ToList(); 有没有办法对整型字段执行相同的操作?我尝试在飞行中转换为字符串,但没有成功: employees = context.Employees .Where(ee => ee.EmployeeID.ToString().Contains(text))

我可以通过如下查询获得字符串字段的部分匹配:

employees = context.Employees
    .Where(ee => ee.LastName.Contains(text))
    .ToList();
有没有办法对整型字段执行相同的操作?我尝试在飞行中转换为字符串,但没有成功:

employees = context.Employees
    .Where(ee => ee.EmployeeID.ToString().Contains(text))
    .ToList();

鉴于这是一个假设,如果EF不直接支持它,只需强制它在过程中发生:

employees = context.Employees
    .AsEnumerable()
    .Where(ee => ee.EmployeeID.ToString().Contains(text))
    .ToList();

考虑到这已经是一个坏主意,提取所有员工数据并没有那么糟糕;)

我认为这根本不是一个好主意,如果您需要这样搜索,那么您最好将搜索的列作为字符串。否则,不管字段是否被索引,您在这里所做的都是表扫描。
这样做,随着表格的增长,表格扫描将变得更加昂贵。

对数字字段进行扫描意味着什么?为什么要将“员工ID中包含43个”匹配?这表明你真的把ID看作是一个文本字段,而不是一个数值或仅仅是一个ID。也许他是在用它来自动完成。出于数据库效率的考虑,ID最好保持为int而不是varchar。也许他在测试Benford定律?:)@乔恩·斯基特——我没说这是个好主意,只是问能不能做到?;)至于你的例子,是的,就是这样。他们希望能够部分匹配一个ID字段,该字段在数据库和employee类中都是整数。我当然会尝试说服他们放弃它,但很高兴知道,如果强制的话,我会有一个后备方案。我总能提醒他们,如果(什么时候?)这成为一个绩效问题,那是多么糟糕的想法。@Sean:如果你需要任何帮助说服他们,请告诉我。基本上,听起来他们应该有一个单独的字段。ID只能用于识别。它们几乎总是应该被视为彼此相等或不同的值。