C# LINQ-在最低和最高字符串之间查找
我想在较大的字符串中找到介于“0000”和“9999”之间的字符串号 从“qwt0000abc”到“qwt9999abc” MSSQL,其中id介于“qwt0000abc”和“qwt9999abc”之间 我将如何编写相同的LINQ查询C# LINQ-在最低和最高字符串之间查找,c#,sql-server,performance,linq,C#,Sql Server,Performance,Linq,我想在较大的字符串中找到介于“0000”和“9999”之间的字符串号 从“qwt0000abc”到“qwt9999abc” MSSQL,其中id介于“qwt0000abc”和“qwt9999abc”之间 我将如何编写相同的LINQ查询 var selectedOrders = orders.Where(f => f.Id between "qwt0000abc" and "qwt9999abc"); 试试这个: var selectedOrders = arr.Where(x =>
var selectedOrders = orders.Where(f => f.Id between "qwt0000abc" and "qwt9999abc");
试试这个:
var selectedOrders = arr.Where(x => Regex.IsMatch(x, ".*[0-9]{4}.*"));
或者,如果您需要确切的qwt
前缀和abc
后缀,则可以使用此选项
var selectedOrders = arr.Where(x => Regex.IsMatch(x, "qwt[0-9]{4}abc"));
*
这里是任意次数的文本(包括零),[0-9]{4}
是介于0和9之间的数字,正好是4位数字。试试这个:
var selectedOrders = arr.Where(x => Regex.IsMatch(x, ".*[0-9]{4}.*"));
或者,如果您需要确切的qwt
前缀和abc
后缀,则可以使用此选项
var selectedOrders = arr.Where(x => Regex.IsMatch(x, "qwt[0-9]{4}abc"));
*
这里是任意次数的任意文字(包括零),[0-9]{4}
是介于0和9之间的数字,正好是4位。假设您只需要具有相同前缀和后缀的行,那么只需在之间替换,如下所示:
var selectedOrders = orders.Where(f => f.Id.CompareTo("qwt0000abc") >= 0 && f.Id.CompareTo("qwt9999abc") < 0).ToList() ;
假设您只需要具有相同前缀和后缀的行,那么只需在
之间替换,如下所示:
var selectedOrders = orders.Where(f => f.Id.CompareTo("qwt0000abc") >= 0 && f.Id.CompareTo("qwt9999abc") < 0).ToList() ;
到目前为止你试过什么?您的代码示例代码无效到目前为止您尝试了什么?您的代码示例代码无效,如果这是EF,它将不起作用,需要转换为SQL。一个可能的替代方案,但不引入正则表达式,不如只使用linq并解释一下?如果这是EF,需要转换为SQL,它将不起作用。一个可能的替代方案,但不是引入正则表达式,用linq解释一下怎么样?