我有一张表如下:
| 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启动提供程序。
答案 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();
在这种情况下,只从数据库中检索必要的数据。