Je me suis contenté de faire le tour de tous ces trucs LINQ et il semble que je suis coincé au premier obstacle.
J'ai une table de données en tant que telle:
OrderNo LetterGroup Filepath
----------- ----------- --------------------------------------------------
0 0 Letters/SampleImage.jpg
0 0 Letters/UKPC7_0.jpg
0 0 Letters/UKPC8_0.jpg
Ce dont j'ai besoin est d'obtenir tous les chemins de fichiers de la colonne Filepath dans un tableau de chaînes. Je pensais que LINQ serait parfait pour cela (ai-je raison?), Mais je n'arrive pas à construire la bonne requête.
Quelqu'un peut-il fournir des exemples de code qui me dirigeraient dans la bonne direction? J'ai cherché autour - mais ne semble pas aller nulle part.
Il existe des méthodes d'extension qui facilitent le travail avec les ensembles de données:
using System.Data.Linq;
var filePaths =
from row in dataTable.AsEnumerable()
select row.Field<string>("Filepath");
var filePathsArray = filePaths.ToArray();
Vous pouvez également utiliser la syntaxe de la méthode pour la mettre dans une seule instruction:
var filePaths = dataTable
.AsEnumerable()
.Select(row => row.Field<string>("Filepath"))
.ToArray();
string[] filePaths = (from DataRow row in yourDataTable.Rows
select row["Filepath"].ToString()).ToArray();
Si vous souhaitez utiliser LINQ à fond, configurez votre base de données et créez un objet contextuel. Vous devriez alors pouvoir faire quelque chose comme ceci:
var filepaths = from order in _context.Orders
select order.Filepath;
Cela suppose que votre table pour la ligne est nommée Orders, que je suppose par le nom de votre première colonne de commande. Si vous souhaitez également renvoyer un ensemble de numéros de commande pour une utilisation ultérieure afin de savoir d'où vient le chemin du fichier, vous pouvez faire quelque chose comme ceci:
var results = from order in _context.Orders
select new
{
order.OrderNo,
order.Filepath
}
Cela vous donnerait un nouveau type anonyme contenant à la fois ces valeurs en tant que propriétés.