LINQ查询字符串不包含数字

时间:2016-10-14 14:16:38

标签: entity-framework

LINQ的新手,我在提出一种更简单的方法来添加条件以排除包含数字的字段时遇到了麻烦。

到目前为止,我已经提出了:

db.MyDB.Where(x => !x.MyField.Contains('1') && !x.MyField.Contains('2') && !x.MyField.Contains('3') &&... etc.

必须有更好的方法来实现这一目标。我正在使用实体框架。

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

db.MyDB.Where(x => !x.MyField.Any(x => Char.IsDigit(x)))

您还可以考虑使用带\d的正则表达式。

有很多解决方案,我认为这取决于在这种情况下MyDB的最佳效果。你可以通过玩SqlMethods

来使它更友好
db.MyDB.Where(x => !SqlMethods.Like(x.MyField, "[0-9]"))

答案 1 :(得分:1)

如果这是linq to sql,请使用SqlMethods.Like

db.MyDB.Where(x => SqlMethods.Like(x.MyField, "%[0-9]%");

[编辑]嗯,这不是L2S,而是EF。我相信EF支持PatIndex

db.MyDB.Where(x => SqlFunctions.PatIndex("%[0-9]%", x.MyField) > 0);

(PATINDEX基于1,不基于0)