2013-01-28 4 views
0

내 C# 응용 프로그램에서 datagrisview의 datasource가 클래스 person의 IList로 설정되었음을 의미하는 'person'데이터가 포함 된 DataGridview가 있습니다.DataGridview에 null 값을 추가하십시오.

내 사람 모델은 다음과 같은 필드 (단지 모델이 아닌 DataGridView를) 구성

string foreName 
string surname 
int devisionId 
int someOtherId 
Organisation orga 

기구 일대 NHibernate에와로 매핑하는 다른 모델입니다.

string orgaName 

이제 (나를 위해) 까다로운 부분 온다 .... 내가 사람의 모든 필드를 갖고 싶어 그나마 내 DataGridView에에서 가, 난 그냥 다음을 갖고 싶어 : 그 중에서도 조직은 문자열로 구성 첫 번째 twoe 필드를 얻기

foreName 
surname 
orga.orgaName 

은 간단합니다 :

dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname}).ToList(); 

이 지금까지 잘 작동하지만 지금 나는 또한 나의 된 DataGridView 초 이내에 조직의 이름을 갖고 싶어 나는 이것을 시도했다 :

dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname, OrganisationName = x.Organisation.organName}).ToList(); 

이것은 모든 사람이 조직을 갖고 있지만 사실이 아니라면 잘 작동 할 것이다. 어떤 사람들에게는 조직이 없기 때문에 '조직'이 null이고 Organisation.organName을 잡으려고하는 것은 nullpointerexeption으로 끝납니다.

지금 질문 : 조직이 null이 아니거나 otherwisesomething이 datagridview에 인쇄 될 때 조직 이름이 표시되도록하려면 datagridview-datasource에 대한 select 문을 작성할 수 있습니까 (예 : 사용 가능한 조직 없음))

답변

2

dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname, OrganisationName = x.Organisation == null ? "None" : x.Organisation.organName}).ToList();

+0

이 최고, 대단히 감사합니다. – Metalhead89

+0

다음을 어떻게 구현할 수 있습니까? organization! = null 조직 이름을 설정하고 다른 것을 설정하십시오. – Metalhead89

+0

람다에서 호출하고 호출하는 함수를 작성할 수 있습니다. 이것은 아마도 최선의 방법은 아니지만, 달성하려는 것은 무엇입니까? – paul

1

이 시도 :

dataGridView.DataSource = listOfPersons.Select(x => new { ForeName = x.ForeName, SurName = x.Surname, OrganisationName = x.Organisation != null ? x.Organisation.organName : "No organisation available"}).ToList();