필자는 두 개의 datatable을 가지고 있으며 각 datatables의 zipcode를 일치시켜야하며 프로그램이 매치를 찾을 때마다 일치하는 행의 열을 문자열로 설정해야합니다. 내 코드는 다음과 같습니다.어떻게 두 개의 데이터 테이블과 일치하는 값을 취한 다음 일치하는 행 값의 열에 무언가를 추가합니까?
foreach 루프에서 수행해야 할 작업을 알지 못하거나이 작업을 수행하기 쉬운 방법이 있다면 알려주십시오.
//Datatable for entire list of zipcodes
DataTable datat = new DataTable("DATA");
DataColumn state = new DataColumn();
DataColumn county = new DataColumn();
DataColumn zipcode = new DataColumn();
DataColumn latitude = new DataColumn();
DataColumn longitude = new DataColumn();
DataColumn salesperson = new DataColumn();
DataColumn originalrec = new DataColumn();
//Add the columns to the datatable
datat.Columns.Add(state);
datat.Columns.Add(county);
datat.Columns.Add(zipcode);
datat.Columns.Add(latitude);
datat.Columns.Add(longitude);
datat.Columns.Add(salesperson);
datat.Columns.Add(originalrec);
return datat;
}
private static DataTable InitData2()
{
//Datatable for entire list of zipcodes
DataTable datat2 = new DataTable("DATA");
DataColumn ctype = new DataColumn();
DataColumn csalesperson = new DataColumn();
DataColumn czipcode = new DataColumn();
//Add the columns to the datatable
datat2.Columns.Add(ctype);
datat2.Columns.Add(csalesperson);
datat2.Columns.Add(czipcode);
return datat2;
}
private static String InitPath()
{
string path = "C:/Documents and Settings/Andre/Desktop/SalesMap/data.csv";
return path;
}
private static String InitPath2()
{
string path2 = "C:/Documents and Settings/Andre/Desktop/SalesMap/CUSTOMER_PROSPECT_SALESPERSON.csv";
return path2;
}
public static void Main()
{
try
{
DataTable dt = InitData1();
DataTable dt2 = InitData2();
StreamReader sr = new StreamReader(InitPath());
StreamReader sr2 = new StreamReader(InitPath2());
String csvData = string.Empty;
String csvData2 = string.Empty;
while ((csvData = sr.ReadLine()) != null)
{
String[] data = csvData.Split(',');
//dt.Rows.Add(data);
DataRow newRow1 = dt.NewRow();
newRow1[0] = data[0].ToString();
newRow1[1] = data[1].ToString();
newRow1[2] = data[2].ToString();
newRow1[3] = data[3].ToString();
newRow1[4] = data[4].ToString();
newRow1[5] = "";
newRow1[6] = "";
dt.Rows.Add(newRow1);
Console.WriteLine("Row added for: dt");
}
dt.WriteXml(@"c:\test\dt1.xml");
sr.Close();
while ((csvData2 = sr2.ReadLine()) != null)
{
String[] data2 = csvData2.Split(',');
DataRow newRow2 = dt2.NewRow();
newRow2[0] = data2[0].ToString();
newRow2[1] = data2[1].ToString();
newRow2[2] = data2[2].ToString();
dt2.Rows.Add(newRow2);
Console.WriteLine("Row added for: dt2");
}
dt2.WriteXml(@"c:\test\dt2.xml");
sr2.Close();
foreach (DataRow row1 in dt.Rows)
{
//Dont know what to do here
}
}
catch (Exception e)
{
//Console.WriteLine("The files could not be read:");
//Console.WriteLine(e.Message);
StreamWriter sw = new StreamWriter(@"c:\test\error.txt");
sw.WriteLine(e.Message);
sw.Close();
}
}
}
}
어떤 수업입니까? – tsells
foreach 루프를 만들려고했지만 어떻게 할 수 있는지 파악할 수 없었습니다. 나는 foreach를 다른 foreach 내부에 중첩시켜야 할 것이라고 추측하고 있지만, 어떻게하는지에 대해서는 확신 할 수 없다. 또한, 이것은 수업을위한 것이 아니라 내가 친구와 함께하고있는 프로젝트를위한 것입니다. –
@AdamAndre : 스택 오버플로는 사용중인 코드를 표시 할 때 가장 효과적입니다. 그것이 작동하지 않더라도. – user7116