Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# 是否使用.StartsWith和正则表达式筛选列表?_C#_Asp.net_.net_Regex_Linq - Fatal编程技术网

C# 是否使用.StartsWith和正则表达式筛选列表?

C# 是否使用.StartsWith和正则表达式筛选列表?,c#,asp.net,.net,regex,linq,C#,Asp.net,.net,Regex,Linq,我有这门课: public class SimpleUser { public int ProviderID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public bool ExistingUser { get; set; } } 我有一个列表,我正在按对象中某个属性的第一个字母进行筛选。这非常有效: List<Simp

我有这门课:

public class SimpleUser
{
    public int ProviderID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool ExistingUser { get; set; }
}
我有一个列表,我正在按对象中某个属性的第一个字母进行筛选。这非常有效:

List<SimpleUser> filtersList = originalList.Where(s => s.LastName.StartsWith(alpaPage)).ToList();
我相信我的正则表达式会

[^a-zA-Z]
但如果我错了,请纠正我。所以我有:

var regEx = new Regex("[^a-zA-Z]");
但在那之后。我迷路了
.StartsWith(…
似乎不接受正则表达式。如何设置格式


谢谢!

您可以尝试以下简单代码:

List<string> strList = new List<string>() { "aBC", "1asdf", "123fasdf", "a1" };

strList = strList.Where(s => Regex.IsMatch(s, @"^[^a-zA-Z].+")).ToList();
如果是
123
选项,
alpaPage
应等于
[^a-zA-Z]


结论:使用
originalList.Where(s=>Regex.IsMatch(s.LastName,@“^[^a-zA-Z].+”).ToList();
我认为Regex在这方面做得太过火了。如评论中所述,简单检查
LastName
的第一个字符就可以了:

List<SimpleUser> filtersList = 
    originalList.Where(s => !char.IsLetter(s.LastName[0])).ToList();

您可以只检查字符串的第一个字符,看看它是否不是
char.IsLetter()
,所以
。其中(s=>!char.IsLetter(s.LastName.first())
!char.IsLetter(s.LastName[0])?@maccettura,但我需要检查除a-z或a-z之外的任何内容。不仅仅是数字。@AhmedAbdelhameed,这看起来很有希望,但在整个Link语句中会起作用吗?@caseycrokston假设
originalList
是一个常规列表(例如,不是SQL查询),是的,它应该可以工作。您可以使用
Regex.IsMatch
,它是shorter@Xiaoy312我在写解释的时候考虑过:好吧,这几乎是有道理的!请看我对OP的编辑。我添加了实际的类,以便您可以更好地了解发生了什么。我只需要检查
LastName
。您在这里给出的示例似乎不正确是否特定于列表中的任何属性?@caseycrokston查看更新的答案。它应该为您提供有关如何使用它的足够信息。好吧,好吧!原谅我……我只是不知道如何指定在使用正则表达式时,我只对LastName进行过滤
string pattern = alpaPage + ".+";
List<SimpleUser> filtersList = 
    originalList.Where(s => !char.IsLetter(s.LastName[0])).ToList();
var originalList = new List<SimpleUser>()
{
    new SimpleUser() { LastName = "aaa" },
    new SimpleUser() { LastName = "bbb" },
    new SimpleUser() { LastName = "123" },
    new SimpleUser() { LastName = "#2" },
};

List<SimpleUser> filtersList = 
    originalList.Where(s => !char.IsLetter(s.LastName[0])).ToList();

foreach (var user in filtersList)
{
    Console.WriteLine(user.LastName);
}