web-dev-qa-db-ja.com

LINQを使用してデータセットから単一の列を選択する

このすべてのLINQの問題を回避するだけで、最初のハードルで立ち往生しているように見えます。

私はそのようなデータテーブルを持っています:

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

必要なのは、Filepath列のすべてのファイルパスをString配列に取得することです。これにはLINQが最適だと思いました(そうでしょうか?)が、正しいクエリを作成できないようです。

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

21
m.edmondson

データセットの操作をはるかに簡単にする拡張メソッドがあります。

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();
32
Bryan Watts
string[] filePaths = (from DataRow row in yourDataTable.Rows 
                     select row["Filepath"].ToString()).ToArray();
11
Anthony Pegram

LINQをすべて使用する場合は、データベースをセットアップし、コンテキストオブジェクトを作成します。その後、次のようなことができるはずです。

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

これは、行のテーブルの名前がOrdersであると想定しています。これは、orderの最初の列名から推測します。ファイルパスがどこから来たのかを知るために後で使用するために、一連の注文番号も返したい場合は、次のようにすることができます。

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

これにより、これらの値がプロパティとして含まれる新しい匿名型が得られます。

2
poindexter12