2012-02-21 2 views
-4

У меня есть данные в таблице данных с 4 столбцами. Из этих 10 столбцов первый столбец содержит дату. Данные в таблице в виде: I/рКак сравнить строки в datatable и манипулировать им показывать в определенном формате в C#/asp.net

"15/12/2010",username,24,No 
"16/12/2010",username,24,No 
"17/12/2010",username,24,No 
"18/12/2010",username,24,No 
"19/12/2010",username,24,No 
"20/12/2010",username,25,No 
"21/12/2010",username,24,yes 
"22/12/2010",username,24,No 
"23/12/2010",username,24,No 
"24/12/2010",username,24,No 
"25/12/2010",username,24,No 
"26/12/2010",Prakhar,24,No 
"27/12/2010",username,24,No 
"28/12/2010",username,24,No 

Мы должны связать о/р с ретранслятором. Для aforemenioned I/P вывод должен быть:

O/P 
"15/12/2010 - 20/12/2010",username,24,No 
"21/12/2010 - 21/12/2010",username,24,Yes 
"22/12/2010 - 25/12/2010",username,24,no 
"26/12/2010 - 26/12/2010",username,24,no 
"27/12/2010 - 28/12/2010",username,24,no 

Т.е. мы собираем все даты, соответствующие значениям столбцов соответствия. Мы должны написать для него код C#.

+0

Звучит много как домашнее задание школы. Пробовали ли вы цикл, список объектов данных с клубными данными и выстраиваете список клубочков в цикле? –

+2

Какая чертовщина? –

+0

@ Styne666 и @ Eric Brown - Cal: Я взял кол-во нет. строк в таблице данных и запустить цикл (Outer). Я взял по две строки за раз и попытался сравнить значения. Если все значения приближались, я перешел к следующей строке (внутренний цикл). –

ответ

0
First I have created a new Datatable for our final result: 
DataTable dtInventoryTable = new dtInventoryTable(); 
dtInventoryTable.Columns.Add("RateDate", typeof(string)); 
dtInventoryTable.Columns.Add("RatePlanId", typeof(string)); 
dtInventoryTable.Columns.Add("RoomTypeId", typeof(string));  

private DataTable DisplayInventoryDetails(DataTable dtInventoryDetail) 
{ 
for (int i = 0; i < dtInventoryDetail.Rows.Count; i++) 
{ 
String[] row = new String[dtInventoryDetail.Columns.Count]; 
String[] row1 = new String[dtInventoryDetail.Columns.Count]; 
string str=string.Empty; 
int h=0; 
str = dtInventoryDetail.Rows[i][0].ToString() + " - " +dtInventoryDetail.Rows[i]0].ToString();                     
for (int j = i+1;j< dtInventoryDetail.Rows.Count; j++) 
{     
for (int x = 1; x < dtInventoryDetail.Columns.Count; x++) 
{ 
row[x] = dtInventoryDetail.Rows[i][x].ToString(); 
} 
for (int y = 1; y < dtInventoryDetail.Columns.Count; y++) 
{ 
row1[y] = dtInventoryDetail.Rows[j][y].ToString(); 
} 
bool result = ArraysEqual(row, row1); 

if (!result) 
{ 
dtInventoryTable = GetRoomRateTable(row, str); 
i = j-1; 
h = j; 
break; 
} 
else 
str= dtInventoryDetail.Rows[i][0].ToString() + " - " + dtInventoryDetail.Rows[j][0].ToString(); 
h = j; 
} 
} 
if (h >= dtInventoryDetail.Rows.Count-1) 
{ 
dtInventoryTable = GetRoomRateTable(row, str); 
    break; 
    } 

    } 
    return dtInventoryTable; 
    } 
    private DataTable GetRoomRateTable(String[] row,string str) 
    { 
    row[0] = str; 
    dtInventoryTable.LoadDataRow(row, true); 
    return dtInventoryTable; 
    }