2011-11-11 12 views
0

条件に基づいてデータテーブルから列の値を選択しようとしています。データ型linq selectクエリ

var results = from DataRow myRow in dtCallBack.AsEnumerable() 
       where myRow.Field<DateTime>(1) == startDateTime 
       && myRow.Field<int>(0) == callBackID 
       select myRow.Field<int>(3); 

私のDataTableには、私はintに、変数の結果を変換したい4列ID、日付1、日付2、INTVAL

が含まれています。 (私は列4 intValを返すしたい)

答えて

1
var results = (from DataRow myRow in dtCallBack.AsEnumerable 
       where myRow.Field<DateTime>(1) == startDateTime 
       && myRow.Field<int>(0) == callBackID 
       select myRow.Field<int>(3)).SingleOrDefault(); 
+0

'AsEnumerable' - >' AsEnumerable() ' – sll

+0

私の間違いAsEnumerable()はコードにあります – Premanshu

+0

それは働いています....多くの感謝Thanh – Premanshu

1

あなたは現在、それは外見でIEnumerable<int>を持っています。あなたはその結果のどれを望んでいますか? の場合は何が起こりますか?

あなただけの単一の結果があります確信している場合は、あなたが使用することができます。

var result = results.Single(); 

いずれかが存在しない場合は、最初の結果または0をしたい場合、あなたは

var result = results.FirstOrDefault(); 
を使用することができますが

あなたが最初の結果、例外をしたい場合はいずれかが存在しない場合、あなたは

var result = results.First(); 

を使用することができ、基本的にたくさんあります私たちが実際にあなたにもっと具体的な答えを与える前に要件を明確にする必要があります。

+0

firstOrDefaultは私の目的FirstOrDefaultに役立ちます。結果が0を返さない場合 startDateTimeおよびcallBackIDは確認するパラメータです。 – Premanshu

+0

多くのありがとうジョン。 SingleOrDefaultを追加すると、それがうまくいきました... – Premanshu

+0

@Premanshu:受け入れられた答えとは異なり、私は*最終的に変数resultを呼び出しません。私は個人的にはおそらくそれをクエリに分離してから、明快にするために 'SingleOrDefault'コードを使用します.-私は一般に、クエリ式の最後にメソッド呼び出しを置くことを嫌っています。 –