簡體   English   中英

C#遍歷列表 <T> 收集並查找值是否存在,說明項目名稱

[英]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條記錄,而我不想添加另一個循環,所以我想

  1. 檢查是否s.MainId == mainOnly.ParsedName例如34343 == 23445
  2. 如果(沒有任何回報)則添加到我的新收藏夾

問題

// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM