使用LINQ从数据集中选择单列

时间:2010-12-13 20:49:39

标签: c# linq linq-to-dataset

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

我有一个数据表:

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

我需要的是将Filepath列中的所有文件路径都放入String数组中。我认为LINQ对此是完美的(我是对的吗?),但似乎无法构造正确的查询。

任何人都可以提供一些能够指向正确方向的代码示例吗?我四处寻找 - 但似乎没有到达任何地方。

3 个答案:

答案 0 :(得分:31)

有一些扩展方法可以更轻松地处理数据集:

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();

答案 1 :(得分:11)

string[] filePaths = (from DataRow row in yourDataTable.Rows 
                     select row["Filepath"].ToString()).ToArray();

答案 2 :(得分:2)

如果要一直使用LINQ,请设置数据库并创建上下文对象。然后你应该可以做这样的事情:

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

这假设您的行表名为Orders,我猜您的第一个订单列名称。如果您想要返回一组订单号以便稍后使用以了解文件路径的来源,您可以执行以下操作:

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

这将为您提供一个新的匿名类型,其中包含这些值作为属性。