首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串列表-使用LINQ的部分条目StartsWith

字符串列表-使用LINQ的部分条目StartsWith
EN

Stack Overflow用户
提问于 2013-07-10 21:40:20
回答 2查看 935关注 0票数 0

想象一下我有这样的代码

代码语言:javascript
运行
复制
public List<string> X

我装载下列物品:

launch.txt reset.txt 民歌名 异类名称

我知道我可以通过调用X.Contains("value")来查找列表中的某一项。

但是如果我传递"foldername/file.txt“呢?

检查字符串是否以X列表中的任何条目开头最简单的方法是什么?理想情况下,我希望捕获“foldername/”中的所有文件。子目录也是如此,所以我想使用StartWith。

LINQ是解决这个问题的正确方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-10 21:42:25

使用Enumerable.Any扩展方法,它返回true当且仅当给定谓词返回true的序列中有某些项。

代码语言:javascript
运行
复制
string search = "foldername/file.txt";
bool result = X.Any(s => search.StartsWith(s));

当然,StartsWith可能并不适合您的场景。如果在foldername2中只有一个名为X的文件夹呢?我想,在这种情况下,你不会希望result成为true的。

如果要在X中获取与搜索匹配的项,可以执行以下操作。

代码语言:javascript
运行
复制
string search = "foldername/file.txt";
IEnumerable<string> result = X.Where(s => search.StartsWith(s));

如果希望在X中获得与搜索匹配的第一项,可以执行以下操作。

代码语言:javascript
运行
复制
string search = "foldername/file.txt";
string result = X.FirstOrDefault(s => search.StartsWith(s));
票数 4
EN

Stack Overflow用户

发布于 2013-07-10 22:04:22

如果您正在摆弄路径,请使用Path类:

代码语言:javascript
运行
复制
List<string> X = new List<string>(){
    "launch.txt","reset.txt","foldername","otherfoldername"    
};
string search = "foldername/file.tx";
var searchInfo = new
{
    FileNameWoe = Path.GetFileNameWithoutExtension(search),
    FileName = Path.GetFileName(search),
    Directory = Path.GetDirectoryName(search)
};

IEnumerable<String> matches = X.Select(x => new
{
    str = x,
    FileNameWoe = Path.GetFileNameWithoutExtension(x),
    FileName = Path.GetFileName(x),
    Directory = Path.GetDirectoryName(x)
}).Where(xInfo => searchInfo.FileName    == xInfo.FileNameWoe
               || searchInfo.FileNameWoe == xInfo.FileName
               || searchInfo.Directory   == xInfo.Directory
               || searchInfo.Directory   == xInfo.FileNameWoe
               || searchInfo.FileNameWoe == xInfo.Directory)
.Select(xInfo => xInfo.str)
.ToList();

查找:foldername,因为其中一个文件名的FileNameWithoutExtension等于正在搜索的路径的目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17581374

复制
相关文章

相似问题

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