0

我需要用通配符匹配某些字符串,就像使用 SQL LIKE 一样。虽然关于这个主题有类似的问题,但我使用的是 Unity3D,虽然它的 Mono.NET 库有 LINQ,但它没有 SqlMethods。

我需要一种模拟所有通配符的方法。所以'*MSB'应该能够匹配 EastMSB、WestMSB,并且DB0?-??应该匹配 'DB01-11'、'DB01-07' 等。

4

2 回答 2

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得到的。

于 2012-10-09T11:48:30.553 回答
-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() 构造函数中传递的表达式可以是满足您的搜索所需的任何内容。

于 2012-10-09T11:34:31.977 回答