Выберите один столбец из набора данных с помощью LINQ

просто получаю голову вокруг всех этих LINQ вещей, и кажется, что я застрял на первом препятствии.

У меня есть datatable как таковой:

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

Мне нужно получить все пути к файлам из столбца Filepath в массив строк. Я думал, что LINQ будет идеальным для этого (я прав?), но не могу построить правильный запрос.

может ли кто-нибудь предоставить некоторые примеры кода, которые указали бы мне в правильном направлении? Я искал вокруг, но кажется, ничего не получается.

3 ответов


существуют методы расширения, которые упрощают работу с наборами данных:

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

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

Если вы хотите использовать 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
              }

это даст вам новый анонимный тип что содержат оба эти значения как свойства.