[英]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.