반응형
객체 목록에 특정 값이있는 속성이 포함되어 있는지 확인
다음 코드가 있다고 가정합니다.
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";
그래서 내 질문은 myList
내 nameToExtract
문자열 과 일치하는 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
반응형
'program story' 카테고리의 다른 글
컨트롤러에서 ModelState.isValid 수동 설정 (0) | 2020.12.24 |
---|---|
데카르트 곱 데이터 프레임 (0) | 2020.12.24 |
코드로 LINQPad 결과 창을 지울 수 있습니까? (0) | 2020.12.24 |
svn 오류 413 요청 엔터티가 너무 큼의 원인은 무엇입니까? (0) | 2020.12.24 |
자바 스크립트에서 C # (컨트롤러)로 datetime 전달 (0) | 2020.12.24 |