2015-09-18 59 views
-1

有沒有辦法獲得linq中某個鍵的所有值?在linq中獲取某個屬性名稱的所有值?

下面是我收集

[PID,PNAME,EnviornementName]

所以我有這種類型的集合,尋找一個更通用的方法,在那裏我可以檢查屬性名稱並做一個選擇。喜歡的東西,

myCollection.SelectMany(項目=>項目)。凡(項目== propertyName的)

我怎麼能做到這一點?

回答

2

要獲得named屬性值嘗試

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

會試試這個。謝謝。 –

+0

什麼是''d''? –

+0

@EhsanSajjad,OOPS複製並粘貼錯誤。 –

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(); 
+0

感謝您的回答數組,請找對問題的更新, –

0

有幾種方法可以做到這一點,例如有序數組:

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

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

我建議你先從一些LINQ教程:http://www.tutorialspoint.com/linq/

+0

感謝您的回答。尋找更通用的方法,在那裏我可以檢查屬性名稱並做一個選擇。就像,myCollection.SelectMany(item => item).Where(item == propertyName)我該怎麼做? –

+0

這聽起來像你想要傳遞一個列名作爲參數給linq。在這種情況下,已經發布了回答的問題。 http://stackoverflow.com/questions/11963242/how-to-write-linq-query-with-column-name-as-parameter-still-in-a-type-safe-way –

+0

謝謝。將着眼於它。 –