2010-12-13 18 views
19

只是讓我的頭腦圍繞着所有這些LINQ的東西,看起來我被困在第一個障礙。從LINQ中選擇數據集中的單個列

我有一個數據表這樣:

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

我需要的是讓所有的文件路徑列中的文件路徑的成String數組。我認爲LINQ將會是完美的(我是吧?),但似乎無法構建正確的查詢。

任何人都可以提供一些代碼示例,指出我在正確的方向嗎?我已經四處搜尋 - 但似乎沒有得到任何地方。

回答

30

有擴展方法,這使得數據的工作集更容易:

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(); 
11
string[] filePaths = (from DataRow row in yourDataTable.Rows 
        select row["Filepath"].ToString()).ToArray(); 
+0

這根本不使用LINQ。 – poindexter12 2010-12-13 20:59:08

+2

@ poindexter12 - 什麼?對我來說,看起來像LINQ。 – jfar 2010-12-13 21:01:05

+0

@jfar:這在技術上是LINQ語法,所以我刪除了我的投票。然而,本着這個問題的精神,我認爲還有一點可以解釋。 – poindexter12 2010-12-13 21:03:30

2

如果您希望一路使用LINQ,設置數據庫並創建一個上下文對象。然後,你應該能夠做這樣的事情:

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

這是假設你的錶行名爲訂單,這是我猜的順序您的第一個列名。如果你想返回一組順序的編號,以及使用後知道在哪裏的文件路徑來自你可以做類似這樣:

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

這會給你包含這兩個新的匿名類型值作爲屬性。