我想拥有一个带野人的数据库字段。这是反向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的答案实际上非常接近我所寻找的。 p>
答案 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();