Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字段值中带有wildchar的Linq查询_C#_Asp.net_Linq_Entity Framework - Fatal编程技术网

C# 字段值中带有wildchar的Linq查询

C# 字段值中带有wildchar的Linq查询,c#,asp.net,linq,entity-framework,C#,Asp.net,Linq,Entity Framework,我想要一个带有wildchars的数据库字段。这是一种反向wildchar linq搜索 因此,我的字段将包含100-50-*,我希望在搜索任何以100-50-*开头的内容时找到它。所以像100-50-10100-50-31000-50-B这样的搜索都会找到我的行 编辑: 我不确定我是否正确地解释了这一点。 在搜索之前我不知道数据库的内容。字段值可以是100-或100-50-或100-50-10。如果我搜索100-50-10,我希望所有三张记录都显示出来 Thanigainathan的答案实际上

我想要一个带有wildchars的数据库字段。这是一种反向wildchar linq搜索

因此,我的字段将包含100-50-*,我希望在搜索任何以100-50-*开头的内容时找到它。所以像100-50-10100-50-31000-50-B这样的搜索都会找到我的行

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


Thanigainathan的答案实际上与我想要的非常接近。

你可以在下面的句子中使用一些东西

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这个模式作为int,并搜索以该模式开头的项。

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

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,您可以构建您想要的任何模式。

请尝试此模式

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

你用什么特殊字符?仅*或全部来自C正则表达式?似乎这需要我在搜索之前知道数据库中是否有wildchar以及在哪里这似乎有效。稍后将对其进行正确测试。谢谢,我说得太早了。这也会影响这些:1100-5100-1,所以wildchar没有任何意义。