Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Если вы хотите полностью использовать LINQ, настройте свою базу данных и создайте объект контекста. Тогда вы сможете сделать что-то вроде этого:

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

Это предполагает, что ваша таблица для строки имеет имя "Заказы", ​​которое, как я полагаю, по имени вашего первого столбца заказа. Если вы хотите вернуть набор номеров заказов, а затем для использования позже, чтобы узнать, откуда пришел путь к файлу, вы можете сделать что-то вроде этого:

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

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