FilePrefixList.Any(s => FileName.StartsWith(s))
我可以在这里获取s
值吗?我想显示匹配的字符串。
发布于 2015-08-13 17:18:01
Any
只确定是否存在匹配,它不返回除bool
之外的任何内容,并且需要执行查询。
您可以使用Where
或First
/FirstOrDefault
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
需要执行查询,因此效率较低:
string firstMatch = null;
if(FilePrefixList.Any(s => FileName.StartsWith(s)))
{
// second execution
firstMatch = FilePrefixList.First(s => FileName.StartsWith(s));
}
如果您想将所有匹配项放入一个单独的集合中,如List<string>
List<string> matchList = allMatches.ToList(); // or ToArray()
如果您想输出所有匹配项,可以使用String.Join
string matchingFiles = String.Join(",", allMatches);
发布于 2015-08-13 17:32:06
请检查尝试这个:我们假设FilePrefixList是集合列表
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"
});
从列表中选择数据为:
var listItems = FilePrefixList.Where(x =>x.Name.StartsWith("T")).ToList();
https://stackoverflow.com/questions/31984146
复制相似问题