LINQ의 단일, SingleOrDefault, First 및 FirstOrDefault

9250 단어 csharpdotnetlinq

하나의


  • 술어가 일치하는 레코드가 하나만 포함된 컬렉션과 일치하는 경우에만 결과를 반환합니다.

  •     public List<string> Names = new List<string>() { "Jon", "Amber"};
    
        public string GetName()
        {
            return Names.Single(n=>n.Equals("Jon"));
        }
    


  • 컬렉션에 일치하는 데이터가 둘 이상 포함되어 있거나 일치하는 데이터가 없으면 오류가 발생합니다.

  •     public List<string> Names = new List<string>() { "Jon", "Amber", "Depp Jon","Heard Amber" };
    
        public string GetName()
        {
            return Names.Single(n=>n.Contains("Jon"));
        }
    



        public List<string> Names = new List<string>() { "Jon", "Amber", "Depp Jon","Heard Amber" };
    
        public string GetName()
        {
            return Names.Single(n=>n.Contains("ABC"));
        }
    



  • 성능에 영향을 미치는 컬렉션에서 일치 항목을 찾은 경우에도 컬렉션의 모든 데이터를 반복합니다.

  • 단일 또는 기본값


  • 지정된 조건이 충족되지 않을 때 기본값을 반환한다는 점을 제외하면 Single과 유사합니다.

  •     public List<string> Names = new List<string>() { "Jon", "Amber", "Depp Jon","Heard Amber" };
    
        public string GetName()
        {
            return Names.SingleOrDefault(n=>n.Contains("ABC"));
        }
    


  • 오류를 던지는 대신 null(문자열 유형의 기본값)을 반환합니다.

  • 첫 번째


  • 일치하는 레코드가 둘 이상 포함되어 있어도 술어가 컬렉션과 일치하는 경우에만 결과를 반환합니다.

  •     public List<string> Names = new List<string>() { "Jon", "Amber", "Depp Jon","Heard Amber" };
    
        public string GetName()
        {
            return Names.First(n=>n.Contains("Jon"));
        }
    


  • 컬렉션에 일치하는 데이터가 없으면 오류가 발생합니다.

  •     public List<string> Names = new List<string>() { "Jon", "Amber", "Depp Jon","Heard Amber" };
    
        public string GetName()
        {
            return Names.First(n=>n.Contains("ABC"));
        }
    



  • 컬렉션에서 일치하는 항목을 찾으면 컬렉션의 모든 데이터를 반복하지 않으므로 성능 측면에서 Single보다 낫습니다.

  • FirstOrDefault


  • 이것은 지정된 조건이 충족되지 않을 때 기본값을 반환하는 것을 제외하고는 First와 유사합니다.

  •     public List<string> Names = new List<string>() { "Jon", "Amber", "Depp Jon","Heard Amber" };
    
        public string GetName()
        {
            return Names.FirstOrDefault(n=>n.Contains("ABC"));
        }
    


  • 오류를 던지는 대신 null(문자열 유형의 기본값)을 반환합니다.
  • 좋은 웹페이지 즐겨찾기