我需要将某些字符串与通配符匹配,非常类似于SQL LIKE。虽然在这个主题上有类似的问题,我使用的是Unity3D,虽然它的Mono.NET库有LINQ,但它没有SqlMethods。
我需要一种模拟所有外卡字符的方法。因此'*MSB'
应该能够匹配EastMSB,WestMSB,DB0?-??
应匹配'DB01-11','DB01-07'等。
答案 0 :(得分:3)
Linq能够将System.String
类Contains
类的方法扩展到相应的SQL
查询中,以便查询:
var data = dataContext.Clients.Where(c => c.Name.Contains("John"));
会被“翻译”成类似的东西:
DECLARE @p0 VarChar(1000) = '%John%'
SELECT [t0].[Id], [t0].[Name]
FROM [Clients] as [t0]
WHERE [t0].[Name] LIKE @p0
至少,这是我使用LinqPad获得的。
答案 1 :(得分:-1)
你可以这样做。
指出,语法可能不完全正确,它不在我的脑海中,但它会让你感到非常接近。List<string> list = new List<string>();
list.Add("#1");
list.Add("#2");
list.Add("#3");
RegularExpressions.Regex regEx = new System.Text.RegularExpressions.Regex("#1");
var qry = list.Where<string>(item => regEx.IsMatch(item)).ToList<string>();
当然,您在Regex()构造函数中传递的表达式可以是满足您搜索所需的任何内容。