2012-03-30 18 views
1

DataRow []にDate値を挿入し、列にDateTime値を探します。入力された日付の値は、別の検索を実行するためにvarに渡されます。しかし、それは渡すことはできません、any1私のコードを修正するのに役立つことができますか?DataRow []からDateTime値を取得し、それをvarに渡します

//Receive StartDateTime value 
DataRow[] setStartDateTime = DataSet1 
      .Tables["table1"] 
      .Select("StartDateTime =#" + searchMonth + "/" + searchDay + "/" + searchYear + "#"); 

//Count PcrID rows which same row with StartDateTime 
var PcrID_1 = DataSet1 
      .Tables["table1"] 
      .AsEnumerable() 
      .Where(c => c.Field<DateTime>("StartDateTime") == setStartDateTime) /*Error occurs here: Operator '==' cannot be applied to operands of type 'System.DateTime' and 'System.Data.DataRow[]'*/ 
      .Select(d => d["PcrID"]); 

Pcr_1 = PcrID_1.Count();  
+1

はそれが可能System.DateTime 'と「のSystem.Data.DataRowは[]あなたはSystem.Dataを変換する必要があると述べ読み込みエラー.DataRow [] to System.DateTime。 –

+0

「System.Data.DataRow []」から「System.DateTime」への変換の構文がわかりません。だから私は何人かの専門家の助けを必要としているのです – hakunabean

答えて

1

あなたが行の束にSelectを適用する必要が日時によって行をフィルタリングしたら。あなたが望むすべてがカウントはあなたが非常によく

Pcr_1 = setStartDateTime.length; 

かを言って、あなたは、元のフィルタリングを行うことができますことを行うことができ、その後であれば例えば、当然のことながら

var PcrID_1 = setStartDateTime.Select(d => d["PcrID"]); 
Pcr_1 = PcrID_1.Count();  

は、上記のコードでは意味がありません。 LINQを使用して、 - 例えば、

var searchDate = new DateTime(searchYear, searchMonth, searchDay); 
var PcrID_1 = DataSet1.Tables["table1"].AsEnumerable() 
        .Where(c => c.Field<DateTime>("StartDateTime") == searchDate) 
        .Select(d => d["PcrID"]); 

実際の最初と最後のサンプルコードは、tについてPcrIDの列挙を生成します彼は日付を与えた。あなたは明確なリストが必要な場合
、あなたは明確な拡張メソッドを使用することができます - たとえば

var ids = DataSet1.Tables["table1"].AsEnumerable() 
         .Where(c => c.Field<DateTime>("StartDateTime") == searchDate) 
         .Select(d => d["PcrID"]).Distinct(); 
+0

同じ日付にたくさんのPcrIDがあるとしましょう。入力された日付と一致するPcrIDのすべての値を取得できるでしょうか? – hakunabean

+0

@hakunabean、私の編集を見てください! – VinayC

関連する問題