program story

객체 목록에 특정 값이있는 속성이 포함되어 있는지 확인

inputbox 2020. 12. 24. 23:42
반응형

객체 목록에 특정 값이있는 속성이 포함되어 있는지 확인


다음 코드가 있다고 가정합니다.

class SampleClass
{
    public int Id {get; set;}
    public int Name {get; set;}
}
List<SampleClass> myList = new List<SampleClass>();
//list is filled with objects
...
string nameToExtract = "test";

그래서 내 질문은 myListnameToExtract문자열 과 일치하는 Name 속성을 가진 객체에서만 추출하기 위해 List 함수를 사용할 수 있다는 것 입니다.

이 질문이 정말 간단하고 분명하다면 미리 사과드립니다.


Enumerable.Where 확장 메서드를 사용할 수 있습니다 .

var matches = myList.Where(p => p.Name == nameToExtract);

를 반환합니다 IEnumerable<SampleClass>. 필터링을 원한다고 가정하면 위의 List전화 .ToList()간단하게 호출 하십시오.


그런데 오늘 위의 코드를 작성했다면 유니 코드 문자열 처리의 복잡성을 감안할 때 동등성 검사를 다르게 수행 할 것입니다.

var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));

또한보십시오


myList.Where(item=>item.Name == nameToExtract)

using System.Linq;    
list.Where(x=> x.Name == nameToExtract);

편집 : 잘못된 질문 (이제 모든 일치)


LINQ를 제안하는 다른 답변 외에도이 경우 또 다른 대안은 FindAll인스턴스 메서드 를 사용하는 것입니다 .

List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);

Reflection API를 살펴 봐야합니다. 이것은 클래스 자체에 대한 정보가있는 메타 네임 스페이스입니다. 인터페이스 상속 및 모든 것을 요청할 수 있습니다.

http://msdn.microsoft.com/en-us/library/z919e8tw%28v=vs.80%29.aspx

참조 URL : https://stackoverflow.com/questions/4651285/checking-if-a-list-of-objects-contains-a-property-with-a-specific-value

반응형