2016-09-28 61 views
0

我有以下數組和Linq語句。我可以使用Linq獲取字段名稱,但是如何獲取字段值? (在LinqPad)使用Linq獲取數組值(LinqPad)

var source = new[] { 
    new { FirstName = "Foo", SurName = "Bar", Password = "secret" }, 
}; 

var membersToInclude = 
    source 
     .First() 
     .GetType() 
     .GetProperties() 
     .Where(x => x.Name != "Password") 
     .Select(x => x.Name) 
     .ToArray(); 

foreach (var m in membersToInclude) 
{ 
    m.Dump(); 
} 

轉儲()只是顯示的話 - 名字,姓氏 - 如何我還獲得了價值 - 美孚和酒吧? (好的,LinqPad)如何獲得字符串長度(使用LinqPad)?如何使用Linq(LinqPad)獲取字符串長度?

from w in Albums.Take(5) 
    select new 
    { 
     w1 = w.AlbumArtUrl.Substring(1,5), 
     w2 = w.AlbumArtUrl.Length 
    } 

子字符串函數工作正常,但是當我試圖讓長度,LinqPad給了我這個消息

爲函數指定的參數值無效。 [參數#= 1,函數名(如果已知)= LEN]

我一直在使用LEN,LEN,...如何獲取字符串長度值試過嗎?

+0

另一個是LINQ to Entities,對嗎? –

+0

請每個帖子堅持一個問題。 – Blorgbeard

回答

3

您正在選擇屬性的名稱。您需要將其應用於對象以獲取值。這應該會給你一個想法:

var source = new[] { 
    new { FirstName = "Foo", SurName = "Bar", Password = "secret" }, 
}; 

var membersToInclude = 
    source 
     .First() 
     .GetType() 
     .GetProperties() 
     .Where(x => x.Name != "Password") 
     .Select(x => 
      { 
      var value = x.GetValue(source.First()); 
      return new {x.Name, value}; 
      }) 
     .ToArray(); 

foreach (var m in membersToInclude) 
{ 
    m.Dump(); 
} 
+0

非常感謝--- GetValue - 那是我錯過的那個。是的,對象方法。現在運作良好。 –