C#循环列表<;T>;集合并查找值是否存在,并显示projectname
我想看看我拥有的属性集合中是否存在一个值。 表现并不重要C#循环列表<;T>;集合并查找值是否存在,并显示projectname,c#,list,linq,collections,C#,List,Linq,Collections,我想看看我拥有的属性集合中是否存在一个值。 表现并不重要 //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.IsNullO
//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);
}
只需检查集合中是否至少有一个元素符合您的编码,如果是,则返回true
如果还需要与条件匹配的第一个元素的值,则应按照注释中的建议使用,如果未找到元素,注释将返回
null
。但是,您必须要求它的字符串表示形式(如果您重写了ToString
)或ConAppFolderFileFinder.FinalFile
中的任何属性,该属性的类型为string
,我想您只需检查您的查询是否返回任何元素,因此可以使用这种方法:
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);
}
只需检查集合中是否至少有一个元素符合您的编码,如果是,则返回true
如果还需要与条件匹配的第一个元素的值,则应按照注释中的建议使用,如果未找到元素,注释将返回
null
。但是,您必须请求它的字符串表示形式(如果您重写了ToString
)或ConAppFolderFileFinder.FinalFile
中具有类型string
的任何属性,您应该使用FirstOrDefault()
,如果没有与您的条件匹配的项,它将返回null
First()
将在没有返回任何项时引发异常。使用FirstOrDefault(…)并检查结果是否为NullFirst
和FirstOrDefault
都将不起作用,因为它们返回的是FileName
的实例而不是字符串。您应该使用FirstOrDefault()
,如果没有与您的条件匹配的项目,则返回null
First()
将在没有返回任何项时引发异常。使用FirstOrDefault(…)并检查结果是否为NullFirst
和FirstOrDefault
都不会帮助操作,因为它们返回的是FileName
的实例,而不是字符串。因此,一般来说,任何一个实例都会优先于FirstOrDefault吗?请参阅我的编辑。取决于你是否想对正在被发现的实例做任何事情,或者只是想检查是否有。好的,那么实际上我要做的是,如果(!final…thxSo通常会优先于FirstOrDefault吗?请参阅我的编辑。这取决于您是否要对正在查找的实例执行任何操作,或者只是想检查是否有。好的,那么实际上我必须执行的操作不等于(!final…thx)