首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >List.Any获取匹配字符串

List.Any获取匹配字符串
EN

Stack Overflow用户
提问于 2015-08-13 17:16:55
回答 2查看 963关注 0票数 16
代码语言:javascript
复制
FilePrefixList.Any(s => FileName.StartsWith(s))

我可以在这里获取s值吗?我想显示匹配的字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-13 17:18:01

Any只确定是否存在匹配,它不返回除bool之外的任何内容,并且需要执行查询。

您可以使用WhereFirst/FirstOrDefault

代码语言:javascript
复制
string firstMastch = FilePrefixList.FirstOrDefault(s => FileName.StartsWith(s)); // null if no match

var allMatches = FilePrefixList.Where(s => FileName.StartsWith(s));
string firstMastch = allMatches.FirstOrDefault(); // null if no match

所以如果你只需要知道是否匹配就可以使用Any,否则你可以使用FirstOrDefault来获取第一个匹配或null(对于引用类型)。

由于Any需要执行查询,因此效率较低:

代码语言:javascript
复制
string firstMatch = null;
if(FilePrefixList.Any(s => FileName.StartsWith(s)))
{
    // second execution
    firstMatch = FilePrefixList.First(s => FileName.StartsWith(s));
}

如果您想将所有匹配项放入一个单独的集合中,如List<string>

代码语言:javascript
复制
List<string> matchList = allMatches.ToList(); // or ToArray()

如果您想输出所有匹配项,可以使用String.Join

代码语言:javascript
复制
string matchingFiles = String.Join(",", allMatches);  
票数 25
EN

Stack Overflow用户

发布于 2015-08-13 17:32:06

请检查尝试这个:我们假设FilePrefixList是集合列表

代码语言:javascript
复制
 class A
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }

 List<A> FilePrefixList= new  List<A>();
             FilePrefixList.Add(new A
            {
                ID = 1,
                Name = "One"
            });
            FilePrefixList.Add(new A
            {
                ID =2,
                Name = "Two"
            });
            FilePrefixList.Add(new A
            {
                ID = 3,
                Name = "Three"
            });

从列表中选择数据为:

代码语言:javascript
复制
var listItems = FilePrefixList.Where(x =>x.Name.StartsWith("T")).ToList();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31984146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档