Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#循环列表<;T>;集合并查找值是否存在,并显示projectname_C#_List_Linq_Collections - Fatal编程技术网

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(…)并检查结果是否为Null
    First
    FirstOrDefault
    都将不起作用,因为它们返回的是
    FileName
    的实例而不是字符串。您应该使用
    FirstOrDefault()
    ,如果没有与您的条件匹配的项目,则返回
    null
    First()
    将在没有返回任何项时引发异常。使用FirstOrDefault(…)并检查结果是否为Null
    First
    FirstOrDefault
    都不会帮助操作,因为它们返回的是
    FileName
    的实例,而不是字符串。因此,一般来说,任何一个实例都会优先于FirstOrDefault吗?请参阅我的编辑。取决于你是否想对正在被发现的实例做任何事情,或者只是想检查是否有。好的,那么实际上我要做的是,如果(!final…thxSo通常会优先于FirstOrDefault吗?请参阅我的编辑。这取决于您是否要对正在查找的实例执行任何操作,或者只是想检查是否有。好的,那么实际上我必须执行的操作不等于(!final…thx)