Linq查询字段值中带有通配符

时间:2014-02-14 13:02:02

标签: c# asp.net linq entity-framework

我想拥有一个带野人的数据库字段。这是反向wildchar linq搜索。

所以我的字段将包含“100-50- *”,当我搜索以“100-50-”开头的任何内容时,我想找到这个。因此,像“100-50-10”,“100-50-3”,“100-50-B”等搜索都会找到我的行。

编辑: 我不确定我是否正确解释了这一点。 我在搜索之前不知道数据库的内容。字段值可以是“100- ”或“100-50 - ”或“100-50-10”。如果我搜索100-50-10,我想要显示所有三条记录。

Thanigainathan的答案实际上非常接近我所寻找的。

3 个答案:

答案 0 :(得分:1)

您可以使用

行中的内容
string searchString = "100-50-B";
string regex = "[0-9]{3}-[0-9]{2}";

var match = new Regex(regex).Match(searchString).Value;

var matches = DataContext.Table.Where(e => e.StartsWith(match));

正则表达式将提取XXX-XX(仅此图案为整数)并搜索以该格式开头的项目。

答案 1 :(得分:0)

这是我做的快速测试,似乎解决了这个问题。

List<string> test = new List<string> { "100-50-1,", "100-50-2", "100-50-3", "100-60-6" };
var items = (from s in test where s.StartsWith("100-50") select s).ToList();

使用StartsWith可以构建您正在寻找的任何模式。

答案 2 :(得分:0)

请试试这个。

   var dataSource = new List<string>() { "100-50-*" };
   var filteredData = dataSource.Where(l => "100-50-10".StartsWith(l.Replace("*",string.Empty))).ToList();