特定の条件を満たすデータテーブル行番号の配列を取得するにはどうすればよいですか?たとえば、 "DateTime"列のデータテーブルがあります。私は、 "DateTime"が変数startTimeに等しいデータテーブルの行番号を取得したいと思います。LINQを使用して特定の条件を満たすデータテーブル行番号を取得する
私は実際の行を取得する方法を知っていますが、データテーブル内の行の番号は取得しません。
すべてのヘルプは理解されるであろう:)
特定の条件を満たすデータテーブル行番号の配列を取得するにはどうすればよいですか?たとえば、 "DateTime"列のデータテーブルがあります。私は、 "DateTime"が変数startTimeに等しいデータテーブルの行番号を取得したいと思います。LINQを使用して特定の条件を満たすデータテーブル行番号を取得する
私は実際の行を取得する方法を知っていますが、データテーブル内の行の番号は取得しません。
すべてのヘルプは理解されるであろう:)
私は、インデックスための第2の入力は、あなたのために働くことができますSelect
のオーバーロードを使用して、右の質問を読んでいた場合。その日は、第1〜第3、第6行に一致した場合
var indices =
table.AsEnumerable()
.Select((row, index) => new { row, index })
.Where(item => item.row.Field<DateTime?>("DateTime") == startTime)
.Select(item => item.index)
.ToArray();
のようなものは、配列のインデックス0、2含まれています、と5.は、もちろん、クエリの場合には、各インデックスに1を追加することができます
大変感謝しています! – user1035217
Anthony、 'ToArray()'を使って 'var'の代わりに別の' DataTable'に結果を得ることは可能でしょうか?または 'var'を' DataTable'に変換/キャストするだけですか? 'ToDataTable()'があることを望みます) – bonCodigo
int count = tblData.AsEnumerable()
.Count(row => row.Field<DateTime>("DateTime").Equals(startTime));
またはクエリとして:
int count = (from row in tblData.AsEnumerable()
where row.Field<DateTime>("DateTime").Equals(startTime)
select row).Count();
+1 'AsEnumerable()'が必要ですか?私は 'Count'がSQLでうまくいくと思うので、あなたはRDBMS層で仕事をしているLINQ2SQLに頼ることができます。 – dasblinkenlight
@dasblinkenlight、彼はLinq-to-SQLを使用していることは明らかではありません。 OPがdatatableを言うとき、私は 'DataTable'型の実際のメモリ内オブジェクトを意味すると解釈します。もちろんこれは非常に間違っている可能性があります。 –
@AnthonyPegramあなたが正しいです、私はlinq-2-sqlだと思っていました。 – dasblinkenlight
これは不可能です:あなたは1(.Select(item => item.index + 1)
EX)で開始する行番号をしたいと思います。 SQL(SQLを使用すると仮定します)では、返される行の順序は保証されません。あなたの行は主キーに従って物理的に順序付けられています。したがって、信頼できる行識別子が必要な場合は、主キー番号/ idを使用する必要があります。
http://stackoverflow.com/questions/1165028/how-do-i-add-row-number-to-a-linq-query-orentity –
http://code.msdn.microsoftを参照してください。 .com/LINQ-to-DataSets-09787825を選択し、選択範囲までスクロールダウンしてください。 –