2013-08-16 2 views
1

database에서 200k 레코드와 같은 데이터를 받고 linq 결과에 ColumnNameEMAIL과 함께 저장합니다. 이제 linqresult의 모든 이메일을 표시하고 ,으로 분리하여 TextBox에 추가하려고합니다.Linq 결과 모든 행 데이터를 문자열로 결합

사실, 난 그 linq 결과 DataTable을 준비하고 코드의 모든 행 데이터를 결합했다 : DataTable 제조,

var dataLists = (from xx in VDC.SURVEY_EMAIL_LIST 
        where xx.EMAIL_GROUP_ID == ListGroupID 
        select xx).ToList(); 

DataTable DtDataLists = LINQToDataTable(dataLists); 

EmailIDS = string.Join(",", DtDataLists.AsEnumerable().Select(x => x["EMAILID"].ToString()).ToArray()); 

을하지만, 시간이 오래 걸립니다. 그래서 나는 linq 결과에서 string 을 직접 작성한다고 생각했습니다. 아무도 도와 줄 수 있습니까?

+1

당신은'string.Join (",", dataLists.Select을 (사용할 수 있습니다 X => X .EmailId) .ToArray())' – Nilesh

답변

5

이 코드는 당신을 위해 작동해야하지만이있을거야 확실하지 않다 훨씬 더 빨리 :

string.Join(",", dataLists.Select(x => x.EMAILID)); 
+0

null 값을 허용하지 않는 방법은 다음과 같습니다. linq 결과에 null 값이있는 동안 null 참조 예외가 발생합니다. 이렇게하려면 다음과 같은 것이 필요합니다. var text = string. Join (",", table.AsEnumerable(). Select (T => (T.ColumnName == null)? "": T.ColumnName) .ToString())); – RealSteel

+2

@RealSteel 필터 문 ('Where')을 표현식에 추가하기 만하면됩니다. (x => x.EMAILID)); ' –

+0

약간의 테스트를 수행 한 성능에 대해서는 string.JOIN LINQ와 결합하여 고성능입니다. http://www.dailycode.info/Blog/post/2014/05/07/Using-LINQ-to-concatinate-an-object-property-from-a-list-of- objects.aspx 왜 나는 당신이 데이터 테이블을 사용할 지 모르겠다. – Mark