Выберите один столбец из набора данных с помощью 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
}
это даст вам новый анонимный тип что содержат оба эти значения как свойства.