2011-04-12 3 views
4

내 데이터베이스 인 db는 외래 키 'CdTitle'이있는 '아티스트'로 기본 키로 사용되며 사용자는 데이터베이스에 추가 할 정보를 다른 형식으로 입력 할 수 있습니다 양식, 나는 데이터베이스에서 아티스트의 이름, 주로 'Artist.Names'를 채우려는 콤보 상자가 있습니다. LINQ를 사용하여 데이터베이스를 탐색하고 쿼리의 결과를 콤보 상자에 넣으려고 시도했지만 내가 생각했던 것처럼 작동하지 않아.콤보 상자 항목을 동적 데이터베이스의 멤버로 채우기 C#

내가 가지고있는 코드는 다음과 같이, 기존의 샘플에서

comboBox1.DataValueField = "Id"; 
comboBox1.DataTextField = "Name"; 

comboBox1.DataSource = formByArtist.db.Artists; 
comboBox1.DataBind(); 
+2

어떤 문제가 발생합니까? 코드가 정확 한 것 같습니다 ... – dahlbyk

+0

@dahlbyk : 잘못되었습니다 - 아무 것도 실행되지 않았으며 ArtistNames는 null입니다 (나는 믿습니다) ... 어떻게 든, linq 문은'.ToList()'와 함께 실행되어야합니다; '처음()'; 'FirstOrDefault()'등 – IAbstract

+1

질의는'foreach'에 의해 즉시 실행될 것입니다. 'DataSource'를 사용하고 싶다면'ToList()'가 필요합니다. – dahlbyk

답변

1

아티스트는 이름과 ID가 Suposing, 당신은이 작업을 수행 할 수 있습니다

var ArtistNames = 
    (from name in formByArtist.db.Artists  
    select name.Name) 
    .ToList(); 

comboBox1.DataSource = ArtistNames; 
+0

'.DataBind()'가 필요하다고 생각하지 않습니다. 그러나 +1, 이것이 내가 사용하는 방법이며 가장 깨끗하다고 ​​생각합니다. :) –

+0

-1 : 여전히 linq 문을 실행하지 않습니다 ... – IAbstract

+0

@IAbstract : db.Artists가 ObjectSet 또는 IQueryable 이라고 가정하면 ** 완전 ** 잘못된 것입니다. 이 똑같은 코드를 실행하고 잘 작동합니다. –

1

수정 :

var ArtistNames = 
    from name in formByArtist.db.Artists  
    select name.Name; 

foreach (var element in ArtistNames) 
{ 
    comboBox1.Items.Add(element.ToString());        
} 
관련 문제