2016-09-28 4 views
0

私は以下の配列とLinqステートメントを持っています。私はLinqでフィールド名を取得できますが、フィールド値を取得する方法は?姓、姓 - - fooとbar - はどのように私も値を得ることができます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に)ダンプ()は、言葉だけが表示されますか?

私は1つのポストで2つの質問をしていますが、それらはすべてlinq -LinqPadに関連しています)Linq(well、LinqPad)を使用して文字列の長さを取得するにはどうすればよいですか?

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

SUBSTRING関数は正常に動作しますが、私は長さを取得しようとすると、LinqPadは関数の指定された引数の値が有効でない私にこのメッセージ

を与えます。 [引数#1(既知の場合)= 1、関数の名前= LEN]

私はlenが、LENは、...どのように文字列の長さの値を取得するために使用してみましたか?

+0

セカンワンはLINQ to Entitiesですよね? –

+0

投稿ごとに1つの質問に固執してください。 – 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 - それは私が行方不明だったものです。そして、はい、オブジェクトのアプローチ。今はうまくいく。 –

関連する問題