2010-12-13 11 views
19

このLINQのすべてを頭に入れて、最初のハードルに詰まっているようです。LINQのデータセットから単一の列を選択

私のようなデータテーブルを持っている:

OrderNo  LetterGroup Filepath 
----------- ----------- -------------------------------------------------- 
0   0   Letters/SampleImage.jpg 
0   0   Letters/UKPC7_0.jpg 
0   0   Letters/UKPC8_0.jpg 

私は必要なものは、文字列の配列にファイルパス列からファイルパスの全てを取得することです。私はLINQがこれには完璧だと思っていましたが(私はそうですか?)、正しいクエリを構築することはできません。

誰かが私に正しい方向を向けるコードサンプルを提供できますか?私は周りを探索した - しかし、どこにも来ていないようです。

答えて

30

データで作業を行い、拡張メソッドがありますがはるかに簡単に設定しています

using System.Data.Linq; 

var filePaths = 
    from row in dataTable.AsEnumerable() 
    select row.Field<string>("Filepath"); 

var filePathsArray = filePaths.ToArray(); 

あなたはまた、1つのステートメントでそれを置くためにメソッド構文を使用することができます。

var filePaths = dataTable 
    .AsEnumerable() 
    .Select(row => row.Field<string>("Filepath")) 
    .ToArray(); 
11
string[] filePaths = (from DataRow row in yourDataTable.Rows 
        select row["Filepath"].ToString()).ToArray(); 
+0

これはLINQをまったく使用していません。 – poindexter12

+2

@ poindexter12 - 何ですか?確かにLINQのように見えます。 – jfar

+0

@jfar:これは技術的にはLINQの構文なので、私はダウン投票を削除しました。しかし、精神の問題では、もう少し説明できたと思います。 – poindexter12

2

あなたの場合すべての方法でLINQを使い、データベースをセットアップしてコンテキストオブジェクトを作成したい。そして、あなたはこのような何かを行うことができるはず:

var filepaths = from order in _context.Orders 
       select order.Filepath; 

これは、行のためのあなたのテーブルは私がオーダーのあなたの最初の列名によって推測受注、命名されたと仮定しています。

var results = from order in _context.Orders 
       select new 
       { 
        order.OrderNo, 
        order.Filepath 
       } 

これはあなたの両方のそれらを含んで新しい匿名型を与えるだろう:あなたは、ファイル・パスは、あなたがそうのような何かができるどこから来たのかを知るために後で使用するためにも、注文番号のセットを返すしたい場合値をプロパティとして返します。

関連する問題