2014-04-06 3 views
0

나는이 Story 클래스의 인스턴스 포함이 List : 다른 방법 지금검색 <Object>

Stories = {Story1, Story2, ...} 

:

List<Story> Stories = new List<Story>(); 

public class Story 
{ 
    public string Id { get; set; } 
    public double Height { get; set; } 
    public double Elevation { get; set; } 
} 

목록에서 인스턴스의 각

이 고유을 List에 특정 Story을 검색하고 새로 만든 객체에 전체 객체를 할당하려고합니다.

Story st = Find a Story in the Stories that its Story.Id=="Story2" 

어떻게하면됩니까?

답변

2

당신은 메서드 구문 중 하나에 LINQ를 사용할 수 있습니다

Story st = Stories.Where(x => x.Id == "Story2").FirstOrDefault(); 

또는 쿼리 구문을 : ​​당신은 문장의 끝에 Single(), First(), FirstOrDefault(), SingleOrDefault을 사용할 수 있습니다

Story st = (from story in Stories 
       where story.Id.Equals("Story2") 
       select story).FirstOrDefault(); 

. 여기에 그 차이점이 있습니다.

  • First()는 -,/비어가 발견되지 않는 경우가 발생합니다 -/비어가 발견되지 않는 경우는 반환 기본,
  • Single()을 복제하는 경우 throw하지 않습니다 -/비어가 발견되지 않는 경우는
  • FirstOrDefault()을 복제하는 경우, throw하지 않습니다 발생 빈/발견되지 않는 경우는 반환 기본, 중복이 경우에 각각 "때문에
+0

감사합니다. 첫 번째 대답은 작동하지 않았습니다. 지금 일하고있다. – Vahid

+0

@Vahid 문제 없습니다. 알아요.) –

+1

철저한 답변 주셔서 감사합니다. – Vahid

1

을 존재하는 경우가 발생합니다 - 중복

  • SingleOrDefault()을 존재하는 경우가 발생합니다 목록 또는

    Story st = Stories.Single(x=>x.Id == "Story2"); 
    

    Story st = Stories.FirstOrDefault(x=>x.Id == "Story2"); 
    

    의 차이는 아무것도 찾을 수없는 경우, 두 번째는 그 경우에 예외를 발생합니다 기본을 반환 처음이다

  • +0

    감사합니다. 이것은 완벽하게 작동했습니다. – Vahid

    1

    사용 LINQ "고유 :

    var story = stories.Where((p) => p.Id == "Goldilocks").FirstOrDefault(); 
    
    관련 문제