如何检索字母数字行?

时间:2014-02-22 13:19:55

标签: c# entity-framework linq-to-entities

我有一张表如下:

|  Id  |FirstName|LastName|IdentityNumber|
   1        A         B       A2301c12
   2        C         D       12345
   3        E         F       ABcD1
   4        G         H       AAA7622II

然后我想只通过linq-to-entities获取其列值为字母数字(包含字母和数字)的记录。

期望的输出:

|  Id  |FirstName|LastName|IdentityNumber|
   1        A         B       A2301c12
   3        E         F       ABcD1
   4        G         H       AAA7622II

注意: Iam使用Entity Framwork 6并为oracle启动提供程序。

2 个答案:

答案 0 :(得分:2)

您可以尝试此查询:

var res = dataSource
    .MyTable
    .AsEnumerable()
    .Where(s => s.IdentityNumber.Any(Char.IsDigit) && s.IdentityNumber.Any(Char.IsLetter));

答案 1 :(得分:1)

此查询假设从表中检索所有数据(可能是大量数据),然后才在客户端上对数据进行排序:

var res = dataSource
 .MyTable
 .AsEnumerable()
 .Where(s => s.IdentityNumber.Any(Char.IsDigit) && s.IdentityNumber.Any(Char.IsLetter));

我们建议您使用此代码:

var results = dbcontext.TESTALPHANUMs.Where(p => OracleFunctions.RegexpLike(p.IDENTITYNUMBER, "[A-Za-z]+[0-9]*$") && ! OracleFunctions.RegexpLike(p.IDENTITYNUMBER, "^[A-Za-z]*$")).ToList();

在这种情况下,只从数据库中检索必要的数据。