2009-07-03 16 views

答えて

2

Utaal noted in this answerのように行全体を反復するだけです。

DataTable.DefaultView.RowFilterはグループ化をサポートすると期待されるかもしれませんが、単純なグループ化ではありませんが、いくつかの基本的な集約とともに、Where節と同等の機能を主に提供します。

3

私が知る限り、それらを得る直接の方法はありません。 forループはかなり簡単で、明らかに他のものよりもリソース集約的ではありません。

+0

これは私が考えていたものです。私はそれがそれを行う方法かもしれないことを望んでいた。ありがとう。 –

0

Utaalの回答に加えて、RDBMSであると仮定して、元のデータソースから1つの列のみを選択するクエリの結果を新しいDataTableオブジェクトに取り込むことができます。これは、コードで表現するのは簡単ですが、DISTINCTクエリのようにSQLで表現しやすいものを指定できるという利点があります。

11

なぜLINQですか?同じ制限なしにここに来る人々のために、これを行う3つの方法があります。下の2つはLINQを使用しています。

C#

List<object> colValues = new List<object>(); 

//for loop 
foreach (DataRow row in dt.Rows) { 
    colValues.Add(row["ColumnName"]); 
} 

//LINQ Query Syntax 
colValues = (from DataRow row in dt.Rows select row["ColumnName"]).ToList(); 

//LINQ Method Syntax 
colValues = dt.AsEnumerable().Select(r => r["ColumnName"]).ToList(); 

VB

Dim colValues As New List(Of Object) 

'for loop 
For Each row As DataRow In dt.Rows 
    colValues.Add(row("ColumnName")) 
Next 

'LINQ Query Syntax 
colValues = (From row As DataRow In dt.Rows Select row("ColumnName")).ToList 

'LINQ Method Syntax 
colValues = dt.Rows.AsEnumerable.Select(Function(r) r("ColumnName")).ToList 

DataTableAsEnumerableメソッドを使用するには、追加System.Data.DataSetExtensionsへの参照を持っている必要がありますLINQ extension methods。そうでない場合は、DataTableRowsプロパティをタイプDataRowとしてキャストすることができます(これは自動的にキャストされるため、クエリ構文で行う必要はありません)。

+0

旧式の.NET Compact FrameworkアプリケーションでLINQを使用できませんでした。しかし、あなたの答えは他の人には役に立ちます。 –

関連する問題