使用Linq (LinqPad)获取数组值

本文关键字:获取 数组 LinqPad Linq 使用 | 更新日期: 2023-09-27 18:09:13

我有以下数组和Linq语句。我可以用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();
}

Dump()只显示单词——FirstName,姓氏——如何获得Foo和Bar值?

当我在它(好吧,我问2个问题在一个帖子-但是....它们都是linq -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,…如何获得字符串长度值?

使用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 =>
          {
            var value = x.GetValue(source.First());
            return new {x.Name,  value};
          })
      .ToArray();
foreach (var m in membersToInclude)
{
   m.Dump();
}
相关文章: