获取linq中某个属性名称的所有值?

时间:2015-09-18 04:06:24

标签: c# linq

有没有办法获取linq中某个键的所有值?

这是我的收藏品

  

[PId,Pname,EnviornementName]

所以我有一个这种类型的集合,寻找更通用的方法,我可以检查属性名称并进行选择。像,

  

myCollection.SelectMany(item => item)。Where(item == propertyName)

我该怎么做?

3 个答案:

答案 0 :(得分:3)

要获取named属性值数组,请尝试

var pName = "PId";
var values = myCollection
  .Select(x => x.GetType().GetProperty(pName).GetValue(x, null))
  .ToArray();

答案 1 :(得分:0)

using System.Linq;

MyCollection.Select(x => x.Pid).ToArray();

或获取唯一值

MyCollection.Select(x => x.Pid).Distinct().ToArray();

或者更好的是,排序的唯一值数组

MyCollection
  .OrderBy(x => x.Pid)
  .Select(x = x.Pid)
  .Distinct()
  .ToArray();

答案 2 :(得分:0)

有几种方法可以做到,例如:

var IDs = from o in myCollection
          select new { o.PId };

var IDs = myCollection.Select(o => o.PId);

我建议您从一些linq教程开始:http://www.tutorialspoint.com/linq/