23

この LINQ のすべてに頭を悩ませているだけで、最初のハードルで立ち往生しているようです。

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

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

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

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

4

3 に答える 3

34

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

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();
于 2010-12-13T20:56:00.543 に答える
12
string[] filePaths = (from DataRow row in yourDataTable.Rows 
                     select row["Filepath"].ToString()).ToArray();
于 2010-12-13T20:51:45.607 に答える
2

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
              }

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

于 2010-12-13T20:58:45.387 に答える