2013-10-30 3 views
0

루프없이 동일한 내용으로 여러 행을 추가하는 방법이 있습니까?루프없이 동일한 데이터를 사용하여 데이터 테이블에 여러 행 추가

다음은 현재이를 위해 사용하고있는 코드입니다. 내가 LINQ이 될 수있는 몇 가지 다른 방법으로 루프를 대체 할

enter image description here

처럼

 DataTable dtMessageDetails = new DataTable("Private Message Details"); 
     for (int i = 0; i < 10; i++) 
     { 
      dtMessageDetails.Rows.Add("65E6BD38-2806-S15G-9DC5-9DE908333996", 3, 0, "News", "News", Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")), "Publish", "mes", 0, 0, 0, "null", "null", "Active"); 
     } 

그리고 내 데이터 테이블은해야 보인다.

+2

루프에 문제가 있습니까? –

+0

나는 더 명확해야한다고 생각합니다. 데이터 테이블에 10000 개가 넘는 행이 있으므로 가장 빠른 방법이 필요합니다. 따라서 성능 향상을 위해 반복하지 않는 것이 좋습니다. – Sudha

+0

성능이 문제가되지 않을 것이라고 생각합니다. –

답변

2

, 당신이있는 DataRowCollection.Add Method (DataRow) 메서드 오버로드를 사용하는 것이 좋습니다 slightly faster : 당신은 당신의 코드를 통해 새로운 DataTable 인스턴스에 동일한 행을 추가하려는 경우 당신이 DataTable.Copy Method를 사용하는 경우

var itemArray = new object[] { 
    "65E6BD38-2806-S15G-9DC5-9DE908333996", 3, 0, "News", "News", 
    Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")), 
    "Publish", "mes", 0, 0, 0, "null", "null", "Active" }; 

for (int i = 0; i < 10000; i++) 
{ 
    var r = dtMessageDetails.NewRow(); 
    r.ItemArray = itemArray; 
    dtMessageDetails.Rows.Add(r); 
} 

, 당신은 또한 약간의 성능 향상을 얻을 수 있습니다. 코드에서 위의 행을 한 번만 만든 다음 다음을 사용하여 다른 데이터 테이블을 채우십시오.

+2

NewRecordFromArray 짐승에 대해 몰랐습니다. 좋은 점, 항목 배열 검사를 건너 뛰는 것이 더 빠를 것입니다. –

3

Linq는 데이터를 쿼리하기위한 것이지 삽입을위한 것이 아닙니다. linq을 사용하여 데이터를 준비 할 수 있지만 행을 추가하는 데 동일한 루프가 사용됩니다. 따라서 당신은 동일한 데이터를 삽입, 난 당신이 대신 각 반복에 새 항목 배열을 만드는 이들 데이터를 준비하는 것이 좋습니다 :

는 @ lazyberezovsky의 대답에 추가
DataTable dtMessageDetails = new DataTable("Private Message Details"); 
object[] items = { "65E6BD38-2806-S15G-9DC5-9DE908333996", 3, 0, "News", "News", 
        Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")), 
        "Publish", "mes", 0, 0, 0, "null", "null", "Active" }; 

for (int i = 0; i < 10; i++)  
    dtMessageDetails.Rows.Add(items); 
관련 문제