2012-03-15 7 views
1

基本的に私はDataTable A( - http://i.imgur.com/cvTMB.pngを参照)に対応する日付を含んでいます。C# - 文字列がDataRowにあるかどうかを調べる

私はまた、日のリスト小売業者は上の配信が(参照 - http://i.imgur.com/fmSeg.png)をすることができます含まれている別のDataTable B持つ

は、私は何をしたいのDataTable Aの各行をループであるとの日はDataTableのであればBを押して画面に表示します。

これまでのところ私はこれを持っていますが、今は固まっています。

// Firstly call the stored procedure to obtain the list available delivery dates (this is basically today plus 14 days) 
DataTable availableDatesRecord = new DataTable(); 
B2B.Data.CometB2BDB comet = new CometB2BDB(); 
StoredProcedure proc = comet.GetListOfAvailableDates(now); 
DbDataReader reader = proc.ExecuteReader(); 
availableDatesRecord.Load(reader); 

// Now we need to obtain the list of days we can deliver - this is all based on their postcode. 
DataTable possibleDeliveryDayRecord = new DataTable(); 
proc = comet.GetDeliveryDatesByPostcode(postcode); 
reader = proc.ExecuteReader(); 
possibleDeliveryDayRecord.Load(reader); 

DataRow deliveryDays = possibleDeliveryDayRecord.Rows[1]; 


foreach (DataRow row in availableDatesRecord.Rows) 
{ 
string deliveryDay = row["Day"].ToString(); 
} 

これを行う最も効率的な方法は何ですか?

スティーブン

+0

何を試しましたか?あなたは既存のコードを投稿できますか? – codingbadger

+0

ListOfDaysの種類は何ですか?ストリング、列挙型、...? –

答えて

1

参加リストとデータテーブルが必要な場合があります。 Linqを使用できますか? [

文字列:そう、これはhere

に答えた場合は、2.0に残っている場合、私はちょうど、データローに

List<string> days; 
    foreach(DataRow dr in table.Rows) 
     if days.Contains(dr[columnname]) 
     Console.WriteLine(dr[columnname]); 
0

のようなものを、ネストされたループを行うだろうこの単純な方法は、いくつかの基本的な機能を提供します] days = {"monday"、 "tuesday"、 "sunday"};

DataTable table = new DataTable(); 
DataColumn dc = table.Columns.Add("day",typeof(string)); 

table.Rows.Add(days[0]); 
table.Rows.Add(days[2]); 

//query 
foreach(string day in days) { 
    foreach(DataRow row in table.Rows) { 
     if(row[dc] == day) { 
      Console.WriteLine("Row {0} contains {1}",row,day); 
     } 
    } 
    Console.WriteLine(); 
} 
関連する問題