2013-03-08 21 views
10

我的代碼選擇連續的多個要素如下使用LINQ

var users = MyTable.AsEnumerable() 
         .Select(x => new { x.Field<string>("Col1"),x.Field<string> 
         ("Col2")}).ToList(); 

在編譯我得到

無效的匿名類型成員聲明。匿名類型成員必須聲明爲成員分配,簡單名稱或成員訪問權限。

回答

15

您需要在匿名類型

var users = MyTable.AsEnumerable() 
    .Select(x => 
    new { Col1 = x.Field<string>("Col1"), Col2 = x.Field<string>("Col2")}) 
    .ToList(); 

賦予一個名字到每個領域的唯一一次可以省略匿名類型字段的名稱是當表達式本身是一個簡單的名稱編譯器可以使用。例如,如果表達式是字段或屬性,則名稱可以省略。在這種情況下,表達的是一個通用的方法調用,並沒有名字的編譯器將使用

+0

你能解釋一下爲什麼嗎? – TalentTuner 2013-03-08 06:14:00

+1

@Saurabh補充說明 – JaredPar 2013-03-08 06:16:04

3

試試這個:

var users = MyTable.AsEnumerable() 
         .Select(x => new 
         { 
         Col1 = x.Field<string>("Col1"), 
         Col2 = x.Field<string>("Col2")}) 
         .ToList(); 
+0

你能解釋一下爲什麼請你解釋一下嗎? – TalentTuner 2013-03-08 06:13:29

2

您可以使用此

var users = MyTable.AsEnumerable() 
         .Select(x => new 
         { 
         Col1 = x.Field<string>("Col1"), 
         Col2 = x.Field<string>("Col2")}) 
         .ToList();