2010-07-06 4 views
0

5 개의 입력란, 이름, 성별, 신분증, 동물 카테고리 및 동물에서 indata를 가져 오는 검색 기능을 만들고 싶습니다. 동물 카테고리와 동물 사이의 차이는 예를 들어 있습니다. 동물 카테고리 = 포유류와 동물 = 곰. 이것들은 사용자에게 선택 사항입니다. 버튼을 치면 주어진 매개 변수를 검색해야합니다. 데이터는 Animal 유형의 genereic 목록에 저장됩니다. 예. ListanimalCollectionunknown 입력란이있는 검색 기능

내가 LINQ를 사용하려고, 내 쿼리 ->

ienumerable<Animal> result= 
    from a in animalCollection where a.Name== myParameterName 
    && 
    a.Gender == myParameterGender 
    select a; 

문제는 사용자가 쿼리에 따라 만드는 방법을 알고하지 않는 한 나는 기분이야 두 개 이상의 매개 변수를 가지고 싶어 할 때 온다 사용자 입력. 사용자 입력을 확인하기 위해 if 문을 여러 개 만들어야합니까? 나는 다른 방법이 있기를 바랍니다!

임 전문가에게 도움을 요청합니다. 내가 나 자신을 충분히 분명하게하기를 바란다. 당신의 매개 변수는 모든 문자열은 다음과 같은 것을 할 수 있다고 가정 다니엘, 스웨덴

답변

2

:

var result = from a in animalCollection 
      where (string.IsNullOrEmpty(myParameterName) || a.Name == myParameterName) 
       && (string.IsNullOrEmpty(myParameterGender) || a.Gender == myParameterGender) 
       && (string.IsNullOrEmpty(myParameterID) || a.ID == myParameterID) 
       && (string.IsNullOrEmpty(myParameterCategory) || a.Category == myParameterCategory) 
       && (string.IsNullOrEmpty(myParameterAnimal) || a.Animal == myParameterAnimal) 
      select a; 
+0

LukeH은 빠른 응 답 주셔서 감사합니다. 쿼리를 시도했지만 매개 변수 중 하나가 비어 있으면 쿼리가 작동하지 않습니다. 예 : name = ""및 gender = female. Im 밖으로 sugestions, 꽤 많은 시간 동안 이것을 지금 이해하려고 노력하고 있었다. Daniel – Daniel

+0

@ 대니얼 : 그 상황에서 작동해야합니다. 무슨 일이야? 오류가 있습니까? 쿼리가 결과를 반환하지 않습니까? 예기치 않은 결과가 있습니까? – LukeH

+0

당신은 정말 대단해요! 정말 효과가 있습니다! 나는 너무 기뻐요! 나는 좋은 해결책을 찾으려고 이틀을 보냈다! 이것은 정확하게 내가 무엇을 찾고 있었는지입니다. 귀하의 솔루션이 잘못되었다고 비난해서 죄송합니다. 많은 것을 시도했습니다. 이것은 아주 좋은 !! 단지 몇 줄! 굉장해! 이제 검색 기능이 잘 작동합니다! 이 검색어에 대한 질문 중 하나만 ... 예. (string.IsNullOrEmpty (myParameterName) || a.Name == myParameterName) 이 쿼리는 어떻게 작동합니까? string.IsNullOrEmpty가 먼저 일치하는 것을 얻으면 이름을 찾지 않아야합니까? 내가 맞습니까? 거짓이면, 이름을 찾으십시오. – Daniel