我有搜索文件的方法:
public IActionResult FilesContainingText(string query)
{
//...
var results = files.Where(f => f.FileName.ToLower().Contains(query.ToLower()));
这将返回包含query
文本的所有文件。但是,有许多文件以" new"开头。我想从结果列表中删除,但仅当query
字符串不以" new"开头时。
E.g。目前用于以下文件:
NewFile1
NewFile2
File1
File2
如果query
是"文件",它将返回所有4个结果,但如果query
是" newfile"则仅返回前两个结果。我想要的是query
被提供为"文件"它应该只返回File1&结果中的File2。希望这是有道理的。
我尝试过以下内容,但不删除值:
if(!query.ToLower().Contains("new"))
{
results = results.Where(x => !x.FileName.Contains("new"));
}
答案 0 :(得分:1)
您可以修改条件以满足您的要求:
TestKapow
添加的条件要求var lowerQuery = query.ToLower();
var hasNew = lowerQuery.StartsWith("new");
var results = files
.Where(f =>
f.FileName.ToLower().Contains(lowerQuery)
&& (hasNew || !f.FileName.ToLower().StartsWith("new"))
);
不以FileName
开头,或者如果"new"
,则query
也必须以"new"
开头,以便文件为包括在内。