2014-11-12 2 views
0

내가 어떤 특성을 가지고 그 객체의 List 말해봐 :필터 컬렉션

public class Class1 
{ 
    public string s1 {get; set;} 
    public string s2 {get; set;} 
    public string s3 {get; set;} 
} 

나는의 말을하자 문자열로이 List<Class1>를 필터링하고자하는 형식으로되어 있습니다 :

"s1=Hello,s3=Goodbye" 

(아마도 URL을 통해)

물론 일반적인 방법으로 문자열을 구문 분석 한 다음 필터 항목을 순환하여 다시 속성 이름과 비교할 수 있습니다. flection 등

그러나 나는 이미 이와 비슷한 것을하는 라이브러리 나 클래스를 알고 있는지 궁금해하고 있었습니까? 모두 지루하고, 제대로하지 않으면 느려질 수 있습니다. 특히 많은 속성을 가진 클래스의 경우 더욱 그렇습니다. 문제는 다른 사람들이 전에 다루었다고 확신 할만큼 충분히 일반적인 것으로 들립니다. 우아한 솔루션을 아는 사람이 있는지 궁금합니다. 합니다 (WhereLinq를 사용하여보다 구체적으로) 아마도 이런

+1

동적 링크는 이런 종류의 일을 할 수 있습니다. http://dynamiclinq.codeplex.com/ –

+0

감사합니다. Ben - 이것은 'IQueryable'을 구현하는 데이터 공급자의 목록에 의존하는 것으로 보입니다. 그러나 그 목록은 어디서나 올 수 있습니다. 웹 서비스의 직렬화 된 결과. 'IEnumerable'이 유일한 제한이되어야합니다. – AFischbein

+0

get이없는 속성은 아닙니다. LINQ – Paparazzi

답변

0

뭔가 :

var myList = new List<Class1> { new Class1 { s1 = "Hello", s3 = "Goodbye" }, new Class1 { s1 = "Goodbye", s3 = "Hello" } }; 

var filteredList = myList.Where(i => i.s1.Equals("Hello") && i.s3.Equals("Goodbye")).ToList(); 

filteredList 해주기 myList에서 첫 번째 요소를 포함한다.

+0

감사합니다. Sani. 솔루션은 필자의 예제뿐만 아니라 임의의 속성과 값을 처리 할 수 ​​있어야한다는 것을 분명히해야합니다. 그것은 문자열을 구문 분석하고 그것에 포함 된 필터를 적용해야합니다. 감사! – AFischbein