2011-11-06 5 views
1

문자열 프로젝트를 "p1, p2, p3"과 같게 만들고 데이터베이스의 식별자는 다음과 같이 각각 존재합니다. p1 = 1, p2 = 2, p3 = 3 첫 번째 프로젝트 목록에서 내 쿼리에 반환되고, 어떤 생각?배열의 첫 번째 항목 만 반환하는 Linq 쿼리

private List<int> getProjects(string projects) 
    { 

     String[] projectArray = projects.Split(','); 

     QMOIIEntities db = new QMOIIEntities(); 

     var projectList = db.wbs_projects 
      .Where(x => projectArray.Contains(x.prjName)) 
      .Select(x => x.prjID).ToList(); 

     return projectList; 
    } 

* *이 UPDATE 이 문제는 문자열의 공백은 내가

String[] projectArray = projects.Trim().Split(','); 
+2

데이터와 관련된 문제입니다. db.wbs_projects의 샘플 데이터를 제공 할 수 있습니까? –

+2

들여 쓰기가 매우 혼란 스럽습니다.'Contains' 호출을'Where' 호출과 같은 행에 남겨 두는 것이 더 좋았을 것입니다. 왜냐하면 그것의 일부이기 때문에 - 당신의 형식화가 만들어내는 피어가 아니기 때문입니다 봐. –

+0

그리고'projectArray'에 당신이 생각하는 것을 포함하는지 세 번 확인 했습니까? 그리고 Db도 마찬가지입니다. 'p2' 대신'P2' 또는'p2'가 사용됩니다. –

답변

4

다음 코드는 같은 논리를 사용하여, 당신이 언급 한 하나

String[] projectArray = projects.Split(','); 

변경되었습니다 귀하의 질문에. 더미 데이터를 만들었습니다. 코드가 예상대로 작동합니다. 즉, 출력은 각 prjName에 해당하는 prjID입니다.

void Main() 
{ 
    string projects = "p1,p2,p3"; 
    List<string> projectArray = projects.Split(',').ToList(); 

    TestEntities db = new TestEntities(); 
    db.wbs_projects = new List<TestEntities>(); 
    db.wbs_projects.Add(new TestEntities(){prjName = "p1",prjID="Test1"}); 
    db.wbs_projects.Add(new TestEntities(){prjName = "p2",prjID="Test2"}); 
    db.wbs_projects.Add(new TestEntities(){prjName = "p3",prjID="Test3"}); 

    var projectList = db.wbs_projects 
     .Where(x => projectArray.Contains(x.prjName)) 
     .Select(x => x.prjID).ToList(); 

    foreach(var item in projectList) 
    { 
     Console.WriteLine(item);//Test1,Test2,Test3 
    } 

} 

public class TestEntities 
{ 
    public List<TestEntities> wbs_projects{get;set;} 

    public string prjName{get;set;} 
    public string prjID{get;set;} 
} 
+0

코드를 테스트 해 주셔서 감사합니다. 문자열을 확인하게하고 위의 업데이트 된 공백을 발견했습니다 ... – marknery

+0

이제는 모든 것이 잘 작동합니까? –

+0

문자열이 반환되는 방식은 "p1, p2, p3"과 같았습니다. 그래서 그것을 다듬어야했습니다. – marknery

관련 문제