23

只是了解所有这些 LINQ 的东西,我似乎陷入了第一个障碍。

我有一个这样的数据表:

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

我需要的是从 Filepath 列中获取所有文件路径到一个字符串数组中。我认为 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();

您还可以使用方法语法将其放在一个语句中:

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 回答