2009-06-18 1 views
2

다른 데이터 세트의 값을 비교하는 방법. 데이터 세트 또는 더 나은 아이디어를

1 세트 [ "적절한 기록"]

다른 열이 진행 데이터베이스에서오고있다 [ "적절하고 기록 inproper"]

[id], [subsNumber] 

2 열 이름 데이터 세트와 SQL 서버에서오고있다 1을 제외하고 subsNumber

두 번째 datset [ "적절한 inproper records"]의 일치하는 레코드가있는 [subsNumber]의 모든 데이터 세트를 [ "적절한 레코드"]에서 만드는 방법은 무엇입니까?

또는

는 1 세트

또는 다른 어떤 아이디어에서 "subsNumber"열이 일치하지 않는 제 2 데이터 세트의 모든 레코드 [ "적절하고 기록 inproper을"] 삭제

기본적으로 첫 번째 데이터 집합과 동일한 "subsNumber"를 갖는 두 번째 데이터 집합의 모든 레코드를 얻는 방법

답변

3

키가 System.Data.DataRelation을 사용하여 두 개의 데이터 테이블을 공통 열 (또는 열)에 조인합니다. > 루프 throuhg 및 subsNumber을 subsNumber에게

통화 기능을 얻을 통과 -

1 세트 : 여기

내가 문제를 해결 KC's See Sharp Blog

public DataTable GetImproperRecords(DataTable ProperRecords, DataTable ImproperRecords) { 
    DataTable relatedTable = new DataTable("Difference"); 
    try { 
    using (DataSet dataSet = new DataSet()) { 
     dataSet.Tables.AddRange(new DataTable[] { ProperRecords.Copy(), ImproperRecords.Copy() }); 

     DataColumn properColumn = new DataColumn(); 
     properColumn = dataSet.Tables[0].Columns[1]; // Assuming subsNumber is at index 1 

     DataColumn improperColumn = new DataColumn(); 
     improperColumn = dataSet.Tables[1].Columns[0]; // Assuming subsNumber is at index 0 

     //Create DataRelation 
     DataRelation relation = new DataRelation(string.Empty, properColumn, improperColumn, false); 

     dataSet.Relations.Add(relation); 

     //Create columns for return relatedTable 
     for (int i = 0; i < ImproperRecords.Columns.Count; i++) { 
      relatedTable.Columns.Add(ImproperRecords.Columns[i].ColumnName, ImproperRecords.Columns[i].DataType); 
     } 

     relatedTable.BeginLoadData(); 

     foreach (DataRow parentrow in dataSet.Tables[1].Rows) { 
      DataRow[] childrows = parentrow.GetChildRows(relation); 

      if (childrows != null && childrows.Length > 0) 
       relatedTable.LoadDataRow(parentrow.ItemArray, true); 

     } 

     relatedTable.EndLoadData(); 

    } 
    } 
    catch (Exception ex) { 
    Console.WriteLine(ex.Message); 
    } 

    return relatedTable; 
} 
0

첫 번째 데이터 집합의 레코드와 일치하는 두 번째 데이터 집합의 모든 레코드를 얻으려면

IEnumerable list3 = list2.Where (l2 => list1.Contains (l1 => l1.subsNumber == l2.subsNumber));

그 라인을 따라 가세요!

1

에서 게시물에서 파생 된 일부 코드입니다 두 번째 데이터 집합 -> to 새 데이터 집합에 대한 다른 루프 시작

하위 번호가 일치하지 않으면 계속하십시오. 데이터에 subsNumber 일치 작업은 같은 SQLSERVER 테이블 등에 열을 추가하는 경우

코드 :

foreach (DataRow row in ecommDS.Tables["EcommData"].Rows) 
{   
    //string statCode = "" 
    string prdCode = ""; //declaring var for getting string format from ecomm 
    string checking = ""; 
    prdCode = row["PRD-CDE"].ToString(); 
    checking = row["SUBS-NUM"].ToString(); 

    if(checking != subsNum) 
    { 
     continue; 
    }