[英]C# loop over List<T> collection and find if value exists is saying projectname
我想看看我所拥有的属性集合中是否存在一个值。 性能并不重要。
//Insert all the main without wav match
foreach(var mainOnly in fileStuff)
{
var finalCollection = new FinalFile();
var result = finalFile.First(s => s.MainId == mainOnly.ParsedName);
if (string.IsNullOrEmpty(result))
{
finalCollection.ClientName = mainOnly.ClientName;
finalCollection.MainId = mainOnly.ParsedName;
//finalCollection.WavName = Convert.ToInt64(wav.ParsedName);
finalCollection.LastWriteTime = mainOnly.CreationTime;
finalCollection.folder = mainOnly.FolderName;
mainAll.Add(finalCollection);
}
}
我正在遍历1000条记录,而我不想添加另一个循环,所以我想
s.MainId == mainOnly.ParsedName
例如34343 == 23445 问题
// what am i doing wrong here? It is not right
var result = finalFile.First(s => s.MainId == mainOnly.ParsedName);
// this is not right as it won't compile as "result" = 'ConAppFolderFileFinder.FinalFile'
// that is my projectname.FinalFile :/
if (string.IsNullOrEmpty(result))
我想您只会检查查询是否返回任何元素,因此可以使用以下方法:
if(finalFile.Any(s => s.MainId == mainOnly.ParsedName))
{
finalCollection.ClientName = mainOnly.ClientName;
finalCollection.MainId = mainOnly.ParsedName;
//finalCollection.WavName = Convert.ToInt64(wav.ParsedName);
finalCollection.LastWriteTime = mainOnly.CreationTime;
finalCollection.folder = mainOnly.FolderName;
mainAll.Add(finalCollection);
}
Any
都只会检查集合中是否至少有一个元素满足您的条件,如果满足,则返回true
。
如果您还需要匹配条件的第一个元素的值, FirstOrDefault
按照注释中的建议使用FirstOrDefault
,如果未找到任何元素,则返回null
。 但是,您必须要求其字符串表示形式(如果您重写ToString
)或ConAppFolderFileFinder.FinalFile
中具有string
类型的任何属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.